属性包含选择器 * 替代
Attribute Contains Selector * alternative
注意:使用 jQuery 1.3.2(
是的,我正在升级,但仍然需要升级到 1.3.2)
寻找更好的方法来实现这一点
HTML 元素(这来自自定义 PHP 框架,更改非常麻烦):
<select id="car[0][car_id]" name="car[0][car_id]">
... 100+ options
</select>
我可以动态添加另一个下拉列表,如下所示:
<select id="car[1][car_id]" name="car[1][car_id]">
... 100+ options
</select>
和
<select id="car[2][car_id]" name="car[2][car_id]">
... 100+ options
</select>
现在我像这样迭代它们:
function showCarinfo() {
for ( var car_number = 0; $("#car''["+car_number+"'']''[car_id'']").length > 0; car_number++ ) {
// do stuff
}
}
更改选择时:
$("input[name*=car_id]").change(function(){
// display info for each car selected from each drop down select menu
showCarinfo();
});
有没有更好的方法来实现更改和迭代方法?我正在使用"属性包含选择器"(http://api.jquery.com/attribute-contains-selector/),但看起来它会导致更改事件出现很大的性能问题。
更新:
我已经用 $ 替换了 * 来搜索最后一部分,这(我认为)确实对性能有所帮助,但仍在寻找这是否是最佳解决方案
$("input[name$=car_id]").change(function(){
// display info for each car selected from each drop down select menu
showCarinfo();
});
性能问题出在showCarinfo
函数中。您正在循环中执行 DOM 选择。
别这样。而是缓存所选内容...
function showCarinfo() {
var cars = $("input[name*=car_id]");
for ( var car_number = 0; car_number < cars.length; car_number++ ) {
cars.eq(i); // do stuff
}
}
或者您可以使用.each()
function showCarinfo() {
$("input[name*=car_id]").each(function() {
// do stuff
});
}
此外,如果处理程序唯一要做的就是调用该函数,那么一个小的优化就是这样做......
$("input[name*=car_id]").change(showCarinfo);
只是猜测,但我会尝试将 change
事件绑定到所有input
元素并在调用事件时过滤它们:
$("input").change(function() {
if ($(this).attr('name').indexOf('car_id') == 0) {
showCarinfo();
}
});
这样,jQuery 就不必阻止页面执行来将事件处理程序附加到基于选择器的元素。
你可以使用这个:
$('input[name$="[car_id]"]').change(function(){
// codes
});
相关文章:
- Windows8应用程序(html&Javascript):从图片库(除了文件选择器)显示图像的另一种方式
- 在动态创建的元素上获取对特定选择器的引用
- AngularJS-在JSON选择器中使用变量名
- 每当您在选择器内移动鼠标时,悬停功能就会重复
- 使用CSS或js,使用动态选择器选择任意li的下一个元素
- jQuery最近父级的数据属性选择器
- 为什么不'在JQuery中找到第二个css选择器的工作
- 为什么 .focus() 不起作用,而 .css(“color”,“red”) 在同一个选择器上起作用
- jquery IE7中的第n个选择器
- Webdriver.io pageObject模式-通过传递参数来定义元素选择器
- jquery日期选择器年份范围默认值
- jquery日期选择器失去了交互性
- 正在搜索JavaScript日期选择器滑块
- 如何将返回的值应用于多个不同位置的多个选择器
- 寻找使用Javascript从Kendo UI时间选择器中减去时间的更好替代方案
- 从替代字段填充 jquery UI 日期选择器日期字段
- 属性包含选择器 * 替代
- 什么是jQuery替代not(':not(选择器)')
- 如何从中心扩展选择器宽度(或其他有效的替代方案)
- 自动css选择器生成的第n子方法的替代方案