Селекторы jQuery - в порядке скоростей - PullRequest
6 голосов
/ 03 ноября 2011

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

Я хочу составить окончательный список самых быстрых способов выбораэлементы в jQuery

Насколько я понимаю, если бы у меня было следующее

<body>
  <div id="container">
    <ul class="count">
      <li>One</li>
      <li>Two</li>
      <li class="selected">Three</li>
    </ul>
  </div>
</body>

В порядке скорости (от самой быстрой до самой медленной) Выбор по Id:

$('#container')

Выбор по элементу:

$('div')

Выбор по классу с помощью элемента

$('ul.count')

Выбор по части идентификатора элемента с помощью элемента (в данном случае заканчивается)

$("div[id$='tainer']")

Выбор по классу

$('.count')

Выбор по части идентификатора элемента (в данном случае заканчивается)

$("[id$='tainer']")

Это в правильном порядке скорости ия что-нибудь пропустил?

Спасибо

Ответы [ 2 ]

2 голосов
/ 03 ноября 2011

производительность селекторов зависит от нескольких вещей.Основным фактором является браузер с sizzle / querySelectorAll / jsengine и jquery-версией, которые их используют.В основном, jquery улучшает производительность в каждой версии и делает хорошую работу, чтобы выбрать лучший доступный метод в соответствии с браузером.

Любые обновления в браузере, движке js или самом jquery могут привести к появлению нового метода «наилучшего исполнения».Более того, в зависимости от размера и глубины данных метод может внезапно стать быстрее, чем другой.И это не говорит о самом запросе.Например, $ ('# id .class') может не использовать тот же «движок», что и $ ('# id'). find ('. class').

В общем, это не проблемаJQuery довольно оптимизирован.Когда я натыкаюсь на проблемы с производительностью, это никогда не происходит из-за селекторов (но из-за .append (), больших, не делегированных событий или плагинов, и в целом: мой старый плохой код).

если вы действительно, действительноесли вам нужна производительность в dom, вы должны сравнить производительность с «document.getElementbyId» (когда у вас есть идентификатор для его использования) и нативным «document.querySelectorAll», который представляется самым быстрым методом месяца.

0 голосов
/ 03 ноября 2011

вы должны посмотреть на это: в середине документа)

может быть рассчитано до значения

http://css -tricks.com / 855-конкретика-на-CSS-специфичностью /

...