jquery - jQuery 选择器与局部变量的性能

标签 jquery performance caching jquery-selectors

当我需要在函数范围内多次访问 jQuery 选择器的结果时,是否建议运行一次选择器并将其分配给局部变量?

请原谅我这里的陈词滥调的例子,但我认为它说明了问题。 那么,这段代码执行速度会更快吗:

var execute = function(){
    var element = $('.myElement');
    element.css('color','green');
    element.attr('title','My Element');
    element.click(function(){
        console.log('clicked');
    });
}

比这段代码:

var execute = function(){
    $('.myElement').css('color','green');
    $('.myElement').attr('title','My Element');
    $('.myElement').click(function(){
        console.log('clicked');
    });
}

如果没有区别,谁能解释一下为什么? jQuery 在选择元素后是否会缓存元素,以便后续选择器不必再次搜索 dom?

最佳答案

重用选择器引用(您的第一种情况)肯定会更快。这是我做的一个测试作为证明:

http://jsperf.com/caching-jquery-selectors

后一种情况(重新定义选择器)据报道慢了约 35%。

关于jquery - jQuery 选择器与局部变量的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10055165/

相关文章:

performance - HTTP 代理使用的协议(protocol)是否减少了客户端协商的连接数?

javascript - 关于 Javascript 原型(prototype)的范围求和查询问题(Leetcode)

http - 使用cache-control : no-store?有什么缺点

javascript - 如何真正阻止 Chrome 中的缓存?

当您只知道 parent 时,jquery 更改一些具有特定 css 的 child 的 css

javascript - jQuery 1.4.2 功能损坏?

c - 在使用 strcmp 针对两个可能值测试字符串的几种给定方法中,其中一种是显而易见的选择吗?

jquery - 如何使用 jQuery 找到 "li"中的最后一个 "ul"?

Jquery 在选择一个或多个选项时更新价格

performance - 加速 Postgres 对数百万行的查询?