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

前端 未结 3 1662
梦毁少年i
梦毁少年i 2021-01-12 10:54

Slide 30 in Paul Irish\'s blog mentioned:

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

Is

相关标签:
3条回答
  • 2021-01-12 11:07

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

    0 讨论(0)
  • 2021-01-12 11:23

    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.

    0 讨论(0)
  • 2021-01-12 11:30

    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.

    0 讨论(0)
提交回复
热议问题