с меткой против выбора без метки в jQuery - PullRequest
1 голос
/ 23 мая 2011

Просто выкинуть этот вопрос сюда, потому что это заставило меня задуматься сегодня вечером.

Ранее я слышал, что гораздо лучше всегда включать HTML-тег в селектор jQuery, потому что он повышает производительность выбора, хорошо говоря, сообщая jQuery, какие HTML-теги искать, так он не ищет все в документе. (т. е. иди $('div.someclass') вместо $('.someclass'), когда мог.)

У меня вопрос, насколько верно это сейчас , с текущей версией jQuery (в настоящее время 1.6.1)?

Я даже не уверен, пришло ли это понятие до Sizzle (даже не уверен, что Sizzle помогает jQuery работать лучше в этом отношении).

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

$('.someclass')

только потому, что я не хочу идти

$('div.someclass, a.someclass, p.someclass, img:nth-child(3n+2).someclass')

Полностью теоретические только парни. Я знаю, что могу просто пойти $('div,a,p,img:nth-child(3n+2)').filter('.someclass').

EDIT

В некоторой связанной заметке я продолжил и сделал perf тесты на выборке с тегами и без выбора тегов (спасибо Raynos), и, похоже, выбор без тегов был значительно более выгодным, чем выбор тегов на FF и Chrome. with-tag был все еще быстрее в IE8, но, судя по узкому краю, он полностью затмил альтернативу в других браузерах. Хм.

1 Ответ

1 голос
/ 23 мая 2011

$('.someclass') Должно быть намного быстрее, чем $("div.someclass, p.someclass")

Стоит только конкретизировать, если он не расширяет запрос.

Тест

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