Производительность jQuery при выборе нескольких элементов

Это больше вопрос любопытства. При выполнении следующих действий:

$('.selector1, .selector2').doSomething()

Полностью ли jQuery пересекает DOM дважды, чтобы получить каждый набор объектов, соответствующих каждому селектору, или он находит все элементы в одном обходе DOM?

2 ответа

Я думаю, что он использует встроенные функции браузера, чтобы найти это, используя:

document.getElementsByClassName()

Это действительно зависит от браузера. В более новых браузерах он будет использовать document.querySelectorAll для любых запросов DOM (под капотом это вызывает document.getElementsByClassName для классов). В старых браузерах, которые этого не поддерживают, он должен сам разобраться, что, очевидно, будет медленнее.

В общем, вы должны предпочесть сначала найти материал по id (или хотя бы сузить область видимости). Имена классов и тегов будут следующими по скорости. По сути, DOM-операции с естественной поддержкой являются лучшими.

Другие вопросы по тегам