Сравнение производительности выбора jQuery

0

Есть ли разница в производительности между двумя вариантами jQuery, упомянутыми ниже?

jQuery('#someId') 

против

jQuery('span#someId')

Примечание. Между "span" и "#someid" нет пробела,

Кроме того, существует ли какая-либо цель или преимущество упоминания типа элемента, такого как "span" перед идентификатором?

  • 0
    Я сомневаюсь, что упоминание элемента перед идентификатором дает много преимуществ, кроме улучшения читабельности вашего кода, т. Е. Если у вас есть $('span#new') то кто-то знает, что код работает с элементом Span , Если вы выполняете поиск по классу, то очевидно, что выгода только в том, чтобы найти пролеты с определенным классом.
Теги:
performance

2 ответа

1
Лучший ответ

Похоже, они должны быть одинаковыми, а это не так. Включение только id будет всегда быстрее, потому что jQuery сначала оценивает строку, которую вы передаете, чтобы определить, использует ли она селектор запросов javascript или селектор идентификаторов. Здесь код jQuery revelant.

Этот beign сказал, используя только id всегда будет возвращать 1 элемент, в то время как span#id вернет все элементы.

Проверьте это здесь: http://jsfiddle.net/ZW6Ed/

Конечно, использование только идентификатора происходит быстрее, так как getElementById сканирует DOM и останавливается, когда находит идентификатор, пока querySelector doesnt.

Почему "они должны быть одинаковыми, но это не так"? Поскольку наличие нескольких идентификаторов не является допустимым HTML.

  • 1
    Отличное объяснение. Благодарю.
1

jQuery('#someId') является eqvivalent для jQuery('span#someId')

Поскольку id уникален, лучше использовать jQuery('#someId').

id всегда относится к уникальному элементу.


jQuery('#someId') → элемент с id someId

jQuery('span#someId') → Элемент Span с id someId


Результат работы - jsperf

jQuery('#someId') работает быстрее Изображение 174551


Тест производительности селекторов - jsperf Изображение 174551
  • 1
    спасибо за предоставленный результат.
  • 0
    @SrikanthAD Добро пожаловать, рады помочь :)
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню