.find()比基本后代选择方法快吗?

时间:2010-08-06 08:46:52

标签: jquery performance jquery-selectors

在提到的Paul Irish's blog中滑动30:

$('#container').find('div.robotarm')$('#container div.robotarm')

这是真的吗?

3 个答案:

答案 0 :(得分:5)

也许在早期版本的jQuery中就是这种情况。但是,表达式

$('#container div.robotarm')

通过jQuery规范化为

$('#container').find('div.robotarm')

因此$('#container div.robotarm')应该更慢的唯一原因是函数调用开销。但是,这确实是一个微不足道的差异。

如果该调用未规范化,sizzle(Resigs css选择器引擎)将用于查找该元素(从右到左)。那当然会慢得多。

答案 1 :(得分:2)

既然你提出了意见,那就无所谓了。

在DOM的某个配置下,您总是可以想出一个在某些浏览器中运行速度比另一个快的情况。不需要分裂头发。

答案 2 :(得分:1)

只有按ID搜索才能正确。

但是,当我们按标记名称搜索时,它会在$('div').find('p')$('div p')慢的现代浏览器中返回不同的结果,因为后者使用querySelector()