Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

Slide 30 in Paul Irish's blog mentioned:

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

Is this true?

like image 690
Anish Avatar asked Aug 06 '10 08:08

Anish


3 Answers

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.

like image 158
jAndy Avatar answered Nov 15 '22 10:11

jAndy


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.

like image 23
Anurag Avatar answered Nov 15 '22 09:11

Anurag


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().

like image 30
Arvind Avatar answered Nov 15 '22 09:11

Arvind