В jQuery, селектор $ ('[id = foo]') менее эффективен, чем $ ('# foo')? - PullRequest
6 голосов
/ 18 августа 2010

В jQuery этот селектор $ ('[id = foo]') менее эффективен, чем $ ('# foo') ?

Ответы [ 2 ]

16 голосов
/ 18 августа 2010
  • коротко и просто: ДА !

  • длинная история (все еще короткая)

     $('[id=foo]')
    

    используетSizzle (механизм запросов css) для выбора элемента, тогда как

     $('#foo') 
    

    напрямую вызывает getElementById.

Чтобы получить действительно длинную историю, вот так: $('[id=foo]') - это синоним $('*:[id=foo]'), который использует универсальный селектор.Это означает, что он запрашивает ALL узлы в вашей разметке и затем смотрит, какие из них имеют id === foo (который, мы надеемся, будет соответствовать только одному элементу, ID = уникальный).Это, конечно, дорого, довольно дорого.И именно поэтому вы никогда не должны писать такой селектор! Всегда полностью квалифицируйте это, если возможно, как $('span:[id=foo]')

1 голос
/ 18 августа 2010

да,.

Самым быстрым селектором в jQuery является селектор идентификатора $ ('# foo'), поскольку он отображается непосредственно на собственный метод JavaScript, getElementById ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...