Производительность jQuery при выборе нескольких элементов
Это больше вопрос любопытства. При выполнении следующих действий:
$('.selector1, .selector2').doSomething()
Полностью ли jQuery пересекает DOM дважды, чтобы получить каждый набор объектов, соответствующих каждому селектору, или он находит все элементы в одном обходе DOM?
2 ответа
Я думаю, что он использует встроенные функции браузера, чтобы найти это, используя:
document.getElementsByClassName()
Это действительно зависит от браузера. В более новых браузерах он будет использовать document.querySelectorAll для любых запросов DOM (под капотом это вызывает document.getElementsByClassName для классов). В старых браузерах, которые этого не поддерживают, он должен сам разобраться, что, очевидно, будет медленнее.
В общем, вы должны предпочесть сначала найти материал по id (или хотя бы сузить область видимости). Имена классов и тегов будут следующими по скорости. По сути, DOM-операции с естественной поддержкой являются лучшими.