我可以在jquery中创建一个包含它的化合物选择器吗?

Can I make a compound selector including this in jquery?

本文关键字:包含它 一个 化合物 选择器 jquery 创建 我可以      更新时间:2023-09-26

>我有一个函数,它使用每个元素遍历集合中的每个元素,并在从 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

相关文章: