3

我想知道使用缓存选择器和使用链式选择器之间是否存在性能差异?

如果我理解正确,则链接有效,因为每个函数都返回 jquery 对象,该对象与缓存选择器中包含的内容完全相同。因此,在下面的两个示例中,性能方面不会有差异吗?


缓存选择器

$(function(){

    $.on('click', '.disabled', function(){
        $toggle = $(this);
        $toggle.attr('title', 'Object Enabled');
        $toggle.toggleClass('disabled enabled');
        $toggle.html('Enabled');
    });
});


链式选择器

$(function(){

    $.on('click', '.disabled', function(){
        $(this)
            .attr('title', 'Object Enabled')
            .toggleClass('disabled enabled')
            .html('Enabled');
    });
});
4

3 回答 3

6

你可以在这里看到

http://jsperf.com/jquery-chaining

差异可以忽略不计。

链式

$('#theDiv').addClass('test').removeClass('test');

59,874 Operations / Second

单独调用(缓存)

var d = $('#theDiv');
d.addClass('test');
d.removeClass('test');

62,021 Operations / Second
于 2012-10-17T03:05:50.787 回答
5

如果有任何差异,它将具有最小的差异,并且取决于正在执行的浏览器。

“我们应该忘记小的效率,说大约 97% 的时间:过早优化是万恶之源

于 2012-10-17T03:04:38.437 回答
0

它认为两者之间的性能没有太大差异..

检查这个

jsperf 性能

于 2012-10-17T03:09:02.700 回答