Есть ли разница в производительности между двумя вариантами jQuery, упомянутыми ниже?
jQuery('#someId')
против
jQuery('span#someId')
Примечание. Между "span" и "#someid" нет пробела,
Кроме того, существует ли какая-либо цель или преимущество упоминания типа элемента, такого как "span" перед идентификатором?
Похоже, они должны быть одинаковыми, а это не так. Включение только id
будет всегда быстрее, потому что jQuery сначала оценивает строку, которую вы передаете, чтобы определить, использует ли она селектор запросов javascript или селектор идентификаторов. Здесь код jQuery revelant.
Этот beign сказал, используя только id всегда будет возвращать 1 элемент, в то время как span#id
вернет все элементы.
Проверьте это здесь: http://jsfiddle.net/ZW6Ed/
Конечно, использование только идентификатора происходит быстрее, так как getElementById
сканирует DOM и останавливается, когда находит идентификатор, пока querySelector
doesnt.
Почему "они должны быть одинаковыми, но это не так"? Поскольку наличие нескольких идентификаторов не является допустимым HTML.
jQuery('#someId')
является eqvivalent для jQuery('span#someId')
Поскольку id
уникален, лучше использовать jQuery('#someId')
.
id
всегда относится к уникальному элементу.
jQuery('#someId')
→ элемент с id someId
jQuery('span#someId')
→ Элемент Span с id someId
jQuery('#someId')
работает быстрее
$('span#new')
то кто-то знает, что код работает с элементомSpan
, Если вы выполняете поиск по классу, то очевидно, что выгода только в том, чтобы найти пролеты с определенным классом.