jquery选择器速度

哪两个更好/更快?

var a = $('.listItem', $('#myList')); 

VS

 var a = $('#myList .listItem'); 

首先,你是以一种奇怪的方式做错了。 它应该是:

 var a = $('.listItem', '#myList'); 

根据Resig的说法 , find()方法在大多数情况下被certificate是最快的:

 var a = $("#myList").find(".listItem"); 

要知道的唯一真正的方法是对它们进行分析,这实际上是唯一可以给出问题的答案。 由于第一个上下文在元素而不是jQuery对象时效果最佳,因此第一个会有轻微的性能影响。

第二个肯定更容易阅读,并使代码更容易维护。

……在我看来,它会让事情变得更好。

它们都应该产生类似的性能结果。

作为记录,

 var a = $('.listItem',$('#myList')); 

将执行完全相同的:

 var a = $('#myList').find('.listItem'); 

在我的测试中,这是最快的

 var a = $('#myList > .listItem'); 

哦,并且:

 var a = $('.listItem', '#myList'); 

完全错误的。 (编辑)与第一个例子相同。


编辑:

我是个白痴。 最后一个示例在function方面与第一个示例完全相同 。 至于速度,我不能说。 我的猜测是,因为在第一个例子中,jQuery对象已经具有选择器要求的元素,它将比仍然必须找到元素的最后一个示例稍快一些。