jQuery what is faster: selectors or methods?

后端 未结 4 461
-上瘾入骨i
-上瘾入骨i 2020-12-17 22:49

Let\'s say I have $(\'mySelector:first\'); and $(\'mySelector\').first();. Which way is the most efficient? I looked in the source, but still could

相关标签:
4条回答
  • 2020-12-17 23:13

    In my tests, $('mySelector:first'); is faster than $('mySelector').first();

    You may also be interested in this;

    0 讨论(0)
  • 2020-12-17 23:18

    The current accepted answer is not consistent with tests across many browsers comparing :first and :eq(0) to .first() and .eq(0).

    For the current major desktop browsers:
    $('foo').first() is almost four times faster than $('foo:first')

    If you want to inspect the methodology, here are the tests and their current results.

    0 讨论(0)
  • 2020-12-17 23:18

    Compare $('li:first') to $('li').first(), I bet the first one must be faster. Because for example, in a document containing 100 li, then the second query would simply build a list of 100 items and then, return the first one from it; on the other hand, the first query will stop right there after the first li is returned.

    Even the query is handled natively by the browser, it still takes more memory than the first one.

    0 讨论(0)
  • 2020-12-17 23:19

    The second would have to fetch ALL the items in the selector before getting the first. So the if the selector was 10,000 items it would fetch all 10,000 then the first from that group. I would hope the first would be better in this regard since it would filter as it searches (and stopping after the first was found). Probably trivial in most cases, though.

    Of course if you are chaining functions then it may be unavoidable:

    $('.someclass').addClass('otherClass').first().addClass('firstClass');
    
    0 讨论(0)
提交回复
热议问题