单独调用jQuery函数或使用单个链是否更快?如果对一个为什么比另一个更快的补充说明,将非常感激: - )
一个例子:
$('#blah_id').niftyjQueryMethod1().niftyjQueryMethod2();
比
更快/更慢$('#blah_id').niftyjQueryMethod1();
$('#blah_id').niftyjQueryMethod2();
答案 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();
假设这些方法不影响选择选择中存在哪些元素(例如,parent
,find
或filter
这样做,这将是相当多的与示例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();