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对象已经具有选择器要求的元素,它将比仍然必须找到元素的最后一个示例稍快一些。