.find()比基本后代选择方法快吗?
在Paul Irish的博客中提到的幻灯片30:
$('#container').find('div.robotarm')
比$('#container div.robotarm')
快
这是真的?
也许在早期版本的jQuery中就是这种情况。 但是,表达
$('#container div.robotarm')
通过jQuery规范化
$('#container').find('div.robotarm')
所以$('#container div.robotarm')
应该更慢的唯一原因是因为函数调用开销。 但是,这真的是一个微不足道的差异。
如果该调用未规范化,则会使用sizzle
(Resigs css选择器引擎)来查找该元素(从右到左)。 那当然会慢得多。
既然你要求意见,那没关系。
你总是可以想出一个案例,在某个DOM的某个配置下,某个浏览器在某些浏览器中比另一个运行得更快。 不需要分裂头发。
这仅在按ID搜索时才是正确的。
但是当我们按标签名称搜索时,它会在现代浏览器中返回不同的结果,其中$('div').find('p')
比$('div p')
慢,因为后者使用querySelector()
。