jQuery链接比单独的语句更快?

时间:2011-04-03 20:51:03

标签: javascript jquery performance method-chaining

单独调用jQuery函数或使用单个链是否更快?如果对一个为什么比另一个更快的补充说明,将非常感激: - )

一个例子:

$('#blah_id').niftyjQueryMethod1().niftyjQueryMethod2();

更快/更慢
$('#blah_id').niftyjQueryMethod1();
$('#blah_id').niftyjQueryMethod2();

4 个答案:

答案 0 :(得分:6)

在您的示例中,链接更快。

// Example 1
$('#blah_id').niftyjQueryMethod1().niftyjQueryMethod2();

// Example 2
$('#blah_id').niftyjQueryMethod1();
$('#blah_id').niftyjQueryMethod2();

在示例1中,创建jQuery对象($('#blah_id'))的调用仅进行一次。在示例2中,它被制作两次。这意味着第二次通话会更慢。

如果您不想将它们全部放在链中,可以将选择缓存在变量中:

var blah = $('#blah_id');
blah.niftyjQueryMethod1();
blah.niftyjQueryMethod2();

假设这些方法不影响选择选择中存在哪些元素(例如,parentfindfilter这样做,这将是相当多的与示例1完全相同。

答案 1 :(得分:5)

此:

$('#blah_id').niftyjQueryMethod1().niftyjQueryMethod2();

可能比这更快:

$('#blah_id').niftyjQueryMethod1(); $('#blah_id').niftyjQueryMethod2();

但不是因为链接。这是因为选择器查找需要付出代价。

此:

var $blah = $('#blah_id');
$blah.niftyjQueryMethod1();
$blah.niftyjQueryMethod2();

与第一个例子相比,速度可能没有明显差异。

答案 2 :(得分:1)

第一个更快。在第二个选择器中创建一个jQuery对象两次。如果$('#blah_id')被缓存并存储为变量var $blah = $('#blah_id'),然后在第二个选择器中使用$ blah而不是$('#blah_id')那么它就没有真正的区别。

答案 3 :(得分:1)

是的,链接更快,因为找到的DOMElement(通过$('#blah_id'))只是直接从函数传递到函数。

如果你将它们分开,必须一次又一次地找到DOMElement。每$("selector")都是邪恶的。尽量避免使用它们。

您甚至可以设置对previosuly found objets的引用:

var myElement = $('#blah_id');

myElement.doSomething();