Скорость выбора jQuery - PullRequest
       1

Скорость выбора jQuery

3 голосов
/ 06 ноября 2011

Выбор по идентификатору (или одному идентификатору) выполняется быстрее, чем при добавлении дополнительных идентификаторов?

Например

$('#element')

против

$('#container #element')

или даже более конкретно:

$('body div#container div#element')

Ответы [ 4 ]

5 голосов
/ 06 ноября 2011

Да, выбор только по идентификатору должен быть самым быстрым, поскольку jQuery (или Sizzle) может напрямую использовать getElementById. В противном случае остальная часть селектора также должна быть оценена справа налево.

3 голосов
/ 06 ноября 2011

$('#element') должно быть самым быстрым, затем следует $('div'). Они соответствуют родным функциям document.getElementById и document.getElementsByTagName. Все более сложное должно пройти через сложные сценарии и поиск документов.

На всех, кроме IE6, 7 и 8, $('.class') также отображается на новую функцию document.getElementsByClassName, но это медленнее, чем две другие, и все равно придется пройти через Sizzle, если браузер не поддерживает это.

1 голос
/ 06 ноября 2011

На самом деле вызов

document.getElementById("element");

самый быстрый.

Если вам действительно нужен объект jQuery, тогда вызовите $(document.getElementById("element"));

Benchmark

1 голос
/ 06 ноября 2011

Вы всегда должны стараться использовать как можно меньше селекторов, которые будут правильно определять элементы, которые вы хотите обработать.Например, если element является уникальным идентификатором (как и должно быть), то #element будет уникально указывать его, а все остальное будет расточительным как при анализе, так и при обработке.(Разумеется, это относится и к правилам стилей CSS, хотя в этом случае оптимальный выбор селекторов может отличаться от использования jQuery.)

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