首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >重用jQuery选定元素的最有效方法

重用jQuery选定元素的最有效方法
EN

Stack Overflow用户
提问于 2011-03-29 00:02:02
回答 4查看 5.2K关注 0票数 10

我可以想象基于理论的正确答案,但我只是在寻找一些确认。我想知道重用jQuery选择的元素最有效的方法是什么。例如:

代码语言:javascript
复制
$('#my_div').css('background','red');
//some other code
$('#my_div').attr('name','Red Div');

代码语言:javascript
复制
myDiv = $('#my_div');
myDiv.css('background','red');
//some other code
myDiv.attr('name','Red Div');

我假设第二个示例更有效,因为元素#my_div不需要多次找到。对吗?

类似地,首先将$(this)保存在变量中,例如'obj',然后重用'obj‘而不是反复使用$(this),是不是更有效?在这种情况下,jQuery不会被强制一遍又一遍地查找元素,但它被强制将其转换为一个jQuery对象$( this )。因此,通常的经验法则是,如果jQuery对象将被多次使用,那么它是否应该始终存储在变量中?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-03-29 00:06:14

如果你正在使用jQuery选择器(like $('#element')),那么是的,你应该总是存储你的结果。

如果使用object并将其包装在jQuery (如$(this))中,则不需要这样做,因为jQuery不需要再次搜索该元素。

票数 4
EN

Stack Overflow用户

发布于 2011-03-29 00:05:35

您应该编写代码以限制DOM遍历的数量。

当你像这样写东西的时候:

代码语言:javascript
复制
$('#my_div').css('background','red');
//some other code
$('#my_div').attr('name','Red Div');

您正在查找#my_div两次,这效率很低。

您可以通过分配选择器的结果(即var x = $('.something'))并操作变量x来改进这一点,或者您可以像这样对您的方法调用进行:

代码语言:javascript
复制
$('#my_div').css('background','red').attr('name','Red Div');

您将看到上面的代码被大量使用,因为您只找到了一次元素。css()方法将应用一个CSS样式的,并将$('#my_div')的实际结果返回给,因此您可以调用另一个方法,在本例中为attr()

我首选的处理选择器重用的方法是将它们存储为一个变量,并将我的东西包装在一个闭包中。

票数 12
EN

Stack Overflow用户

发布于 2011-03-29 00:20:17

我发现有一件事通常被忽视了,那就是jQuery链是多么强大。它可能不那么明显,但是因为jQuery将包装的元素缓存在链中,所以您可以修改元素,进入更具体的子集,修改,然后返回到通用超集,而不需要太多开销。

我希望是这样的(请原谅我的例子)

代码语言:javascript
复制
$('#myDiv')
    .addClass('processing')
    .find('#myInput')
    .hide('slow')
    .end()
    .removeClass('processing')
    ;

更好的性能甚至比

代码语言:javascript
复制
var $myDiv = $('#myDiv').addClass('processing');
var $myInput = $('#myDiv #myInput').hide('slow');
    $myDiv.removeClass('processing');
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5461755

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档