为什么复制jQuery选择器效率低下?

为什么复制jQuery选择器效率低下?,jquery,duplicates,Jquery,Duplicates,为什么复制jQuery选择器效率低下 例如: 要解决这个问题,需要添加一行额外的代码 const activeTag = $('.tags-list .active'); activeTAg.removeClass('btn-primary'); // then somewhere else on the page $('.tags-list .active').text('active'); 第二种方法还不够有效。在最后一行中,您应该再次使用activeTag,并且您可以加载jquery并获

为什么复制jQuery选择器效率低下

例如:

要解决这个问题,需要添加一行额外的代码

const activeTag = $('.tags-list .active');
activeTAg.removeClass('btn-primary');
// then somewhere else on the page
$('.tags-list .active').text('active');

第二种方法还不够有效。在最后一行中,您应该再次使用
activeTag
,并且您可以加载jquery并获取元素一次,并链接jquery方法<代码>$('.tags list.active').removeClass('btn-primary').text('active';这是低效的,因为当您调用选择器时,它必须在DOM中搜索一个或多个元素,然后创建一个新对象,其中包含与结果相关的所有数据。使用大量匹配的元素集合多次这样做,现在您使用的资源远远超过需要。第一次创建var以后再使用它可以避免所有这些。请注意,效率低下并不一定是坏事。例如,如果您知道要切换
活动的
类,那么重新运行查询可能是有意义的,因为匹配元素的列表已更改。您不想要的是我看到的很多,这是一个10个元素的堆栈一系列完全相同的选择器,10个选择器中的每一个都更改一个CSS样式。这不是低效的。@Wesley完全有道理。如果我在一个大文件中多次使用选择器,我肯定会创建一个
const foobar=$('foobar')
在文件顶部,但如果只是两个实例,我可能不会创建变量。更重要的是IDE警告令人讨厌,但同时,我不想关闭该检查。
const activeTag = $('.tags-list .active');
activeTAg.removeClass('btn-primary');
// then somewhere else on the page
$('.tags-list .active').text('active');