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

max*_*mus 6 javascript performance jquery method-chaining

编写单独调用jQuery函数或使用单个链是否更快?如果一个额外的解释为什么一个比另一个更快,将不胜感激:-)

一个例子:

$('#blah_id').niftyjQueryMethod1().niftyjQueryMethod2();
Run Code Online (Sandbox Code Playgroud)

更快/更慢

$('#blah_id').niftyjQueryMethod1();
$('#blah_id').niftyjQueryMethod2();
Run Code Online (Sandbox Code Playgroud)

lon*_*day 6

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

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

// Example 2
$('#blah_id').niftyjQueryMethod1();
$('#blah_id').niftyjQueryMethod2();
Run Code Online (Sandbox Code Playgroud)

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

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

var blah = $('#blah_id');
blah.niftyjQueryMethod1();
blah.niftyjQueryMethod2();
Run Code Online (Sandbox Code Playgroud)

假定该方法不影响哪些元素存在于选择的选择(例如,例如parent,findfilter做),这将是几乎完全一样,例如1.


Wes*_*n C 5

这个:

$('#blah_id').niftyjQueryMethod1().niftyjQueryMethod2();
Run Code Online (Sandbox Code Playgroud)

可能比这更快:

$('#blah_id').niftyjQueryMethod1(); $('#blah_id').niftyjQueryMethod2();
Run Code Online (Sandbox Code Playgroud)

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

这个:

var $blah = $('#blah_id');
$blah.niftyjQueryMethod1();
$blah.niftyjQueryMethod2();
Run Code Online (Sandbox Code Playgroud)

可能与第一个例子的速度没有明显的差别.