2010-04-01 2 views
11

Есть ли кто-нибудь скамейке, отмеченному выбором элементов с идентификаторами и классами из CSS и javascript?id vs class selection benchmark

Было бы разумно, что элемент с идентификатором быстрее выбирается, чем если бы он имел класс, даже если он был единственным элементом с этим классом.

Нужно ли мне беспокоиться?

ответ

10

При поиске id, селектор остановится, как только он нашел матч (даже если есть много) - Я полагаю, для этой цели есть какая-то таблица поиска ключей/значений, так как она намного быстрее, чем обход DOM. Here's why, и вот выдержка:

Это еще много лучше выбрать по идентификатору ... потому что JQuery использует родной метод браузера (getElementByID), чтобы сделать это и не должны делать какие-либо из это собственный DOM обход, который намного быстрее.

Связанные результаты показывают> 100x улучшение скорости с id против class.

При поиске class выполняется поиск всей области DOM (или области). Here's a benchmark using scope.

Вы можете сравнить селекторы в своем браузере here.

+0

Можете ли вы поддержать это со ссылкой? – zaf

+1

Выполняется поиск всего DOM, даже если ': first' используется как селектор? >. < – Matt

+0

@Matt это jquery, а не javascript;) – Andy

6

Я не думаю, что вы должны быть на самом деле, что касается: отбора по id и отбору class просто не имеет тот же смысл:

  • Если вы хотите, чтобы выбрать элемент, зная, как однозначно укажите его, используйте его id
  • Если вы хотите выбрать один или несколько элементов, зная, что их может быть несколько, обратите внимание, что они имеют возможность однозначно идентифицировать его/их, используйте class.


Тем не менее, вот тест, который может вас заинтересовать: Speed/validity selectors test for frameworks.

+0

Спасибо за ссылку - может потребоваться некоторое время для переваривания данных! Я склонен злоупотреблять «классом», который работает для меня, следовательно, вопрос. – zaf

+0

+1 для ссылки – pixeltocode