Я слышал, что querySelector
& querySelectorAll
- это новые методы выбора DOM
элементов. Как они соотносятся со старыми методами getElementById
и getElementsByClassName
с точки зрения производительности и поддержки браузера?
Как производительность сравнивается с использованием селектора запросов jQuery?
Есть ли рекомендации по выбору нативного набора?
javascript
jquery
dom
идетToEleven
источник
источник
getElementById
иgetElementsByClassName
по - прежнему идеально подходит для целей их имена описывают.qS/qSA
может использоваться из любого контекста элемента, ноgEBI
может использоваться только изdocument
контекста.getElementById
сопоставляетid
атрибуты для поиска узлов DOM приquerySelector
поиске по селекторам. Таким образом , в случае недопустимой селектора , например<div id="1"></div>
,getElementById('1')
будет работать , покаquerySelector('#1')
не удастся, если не сказать ему , чтобы соответствоватьid
атрибуту (напримерquerySelector('[id="1"]')
.querySelector
иquerySelectorAll
полностью поддерживаются. caniuse.com/#feat=queryselectorОтветы:
«Лучше» - это субъективно.
querySelector
это более новая функция.getElementById
лучше поддерживается чемquerySelector
.querySelector
лучше поддерживается чемgetElementsByClassName
.querySelector
позволяет находить элементы с правилами, которые нельзя выразить с помощьюgetElementById
иgetElementsByClassName
Вам нужно выбрать подходящий инструмент для каждой конкретной задачи.
(В приведенном выше тексте для
querySelector
чтенияquerySelector
/querySelectorAll
).источник
getElementById
>querySelector
>getElementsByClassName
, потому что я думал , чтоgetElementsByClassName
должен иметь такой же уровень поддержки , какgetElementById
?Функции
getElementById
иgetElementsByClassName
очень специфичны, а функцииquerySelector
иquerySelectorAll
более проработаны. Я предполагаю, что у них действительно будет худшая производительность.Кроме того, вам необходимо проверить поддержку каждой функции в браузерах, на которые вы ориентируетесь. Чем он новее, тем выше вероятность отсутствия поддержки или "глючности" функции.
источник
nodelist ... is not live
вы можете предоставить для этого документацию? @ W.Prins оба метода возвращаютElement
тип.