Как выбор jQuery работает за кулисами? - PullRequest
4 голосов
/ 27 октября 2011

Какой из следующих селекторов имеет лучшую производительность, если не тот же самый

  1. $('#location_form input#id_name')
  2. $('#id_name')

Я часто имеювопросы, подобные выше, всплывают в моей голове.Я не могу действительно ответить на них, потому что мне не хватает знаний о том, как отбор работает за кулисами.

Мои вопросы:

  1. ответ / мнения на поставленный выше вопрос
  2. ссылки, объясняющие, как выбор jQuery работает за кулисами
  3. делает весь javascriptфреймворки работают так же, как и jQuery, когда дело доходит до выделения?

Спасибо большое.

Ответы [ 2 ]

3 голосов
/ 27 октября 2011

С вашими селекторами, последний работает быстрее, так как jQuery определяет, что вы хотите выбирать только по ID, и возвращает document.getElementByID: https://github.com/jquery/jquery/blob/master/src/core.js#L145-165

Вот полный исходный код: https://github.com/jquery/jquery/blob/master/src/core.js#L78-188

3 голосов
/ 27 октября 2011

Как обычно, «это зависит».Для банально небольшого документа разница невелика.

Для более крупного документа # 1 может иметь гораздо лучшую производительность, поскольку ограничивает поиск до потомков элемента с идентификатором location_form, тогда как #2 будет выполнять поиск по всему документу.

См. http://api.jquery.com/category/selectors/ и, более конкретно, http://api.jquery.com/descendant-selector/

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