Просто выкинуть этот вопрос сюда, потому что это заставило меня задуматься сегодня вечером.
Ранее я слышал, что гораздо лучше всегда включать 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, но, судя по узкому краю, он полностью затмил альтернативу в других браузерах. Хм.