在Paul Irish的博客中,第30张幻灯片提到:
$('#container').find('div.robotarm')
比$('#container div.robotarm')
更快。
这是真的吗?
在Paul Irish的博客中,第30张幻灯片提到:
$('#container').find('div.robotarm')
比$('#container div.robotarm')
更快。
这是真的吗?
$('#container div.robotarm')
通过jQuery规范化为
$('#container').find('div.robotarm')
所以,$('#container div.robotarm')
速度变慢的唯一原因就是函数调用的开销。但这只是微不足道的差异。
如果这个调用没有被规范化,那么 sizzle
(Resig 的 CSS 选择器引擎)将会被用来查找该元素(从右向左)。当然,这样会慢得多。
既然你要求意见,那这并不重要。
在某些浏览器下、特定的DOM配置下,总是会有一种情况下其中一个运行得比另一个快。但没必要过于纠结。
只有在按ID搜索时才是正确的。
但是,当我们按标签名称搜索时,在现代浏览器中返回的结果不同,其中$('div').find('p')
比后者$('div p')
慢,因为后者使用了querySelector()
。