在jquery中缓存vs链式选择器?

时间:2012-10-17 03:02:34

标签: jquery performance caching jquery-selectors chaining

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

如果我理解正确链接有效,因为每个函数都返回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');
    });
});

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:5)

如果存在差异,则最小,这取决于正在执行的浏览器。

“我们应该忘记效率低,大约97%的时间说:过早优化是所有邪恶的根源

答案 2 :(得分:0)

这并不认为两者之间的表现存在很大差异。

检查

jsperf Performance