我可以在jquery中创建一个包含它的化合物选择器吗?
Can I make a compound selector including this in jquery?
>我有一个函数,它使用每个元素遍历集合中的每个元素,并在从 DOM 中删除一个元素后重新编号它们。
现在该函数如下所示:
renumber_items = function(){
$(".item_set").each(function(index){
$(this).find('legend').html("Item " + (index+1));
});
};
我记得在某处读到发现是一个非常低效的操作,所以我想知道是否有办法将"图例"选择器组合成一个化合物选择器。
如果每个.item_set
只有一个legend
,这将稍微简化一些内容:
renumber_items = function(){
$(".item_set legend").html(function(index){
return "Item " + (index+1);
});
};
.html
可以采用函数并存储结果。
如果每个.item_set
有多个legend
,则需要保留一个外部每个,以保持每个集合的数字顺序。
通常,如果您在多次调用的函数上遇到速度问题,并且 jQuery 选择器结果位于一组固定的元素上,您只需在页面加载时将搜索存档到变量并重用它:
var $legends = $(".item_set legend");
renumber_items = function(){
$legends.html(function(index){
return "Item " + (index+1);
});
};
也许你可以尝试使用 .filter((。正如其他人所说,只要您不一直使用它,它就不应该是这样的性能问题。考虑标记要查找/过滤的所有项目,以便可以一次在一个 JQuery 选择器中获取所有项目,而不必在之后过滤所有项目。否则你可以使用(如@Regent注释掉(:
renumber_items = function(){
$(".item_set legend").each(function(index){
$(this).html("Item " + (index+1));
});
};
您可以替换:
$(this).find('legend')
跟:
$('legend', this)
第二个参数设置 jQuery 搜索"legend"的上下文。
如果省略,则上下文默认为 document
。