问题
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