Is .find() faster than basic descendant selecting method?

本秂侑毒 提交于 2020-01-11 05:01:05

问题


Slide 30 in Paul Irish's blog mentioned:

$('#container').find('div.robotarm') is faster than $('#container div.robotarm')

Is this true?


回答1:


Maybe in an earlier version of jQuery that was the case. However, the expression

$('#container div.robotarm')

is normalized through jQuery into

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

So the only reason why $('#container div.robotarm') should be slower is because of function call overhead. But, that would really be a trivial difference.

If that call wasn't normalized, sizzle (Resigs css selector engine) would be used to lookup that element (right to left). That of course would be much slower.




回答2:


Since you asked for opinion, it doesn't matter.

You can always come up with a case where one runs faster than the other in some browser under a certain configuration of the DOM. No need to split hairs.




回答3:


This is only correct when searching by ID.

But when we search by tag name it returns different results in modern browsers where $('div').find('p') is slower than $('div p') because the latter uses querySelector().



来源:https://stackoverflow.com/questions/3422230/is-find-faster-than-basic-descendant-selecting-method

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!