Производительность jQuery при выборе нескольких элементов - PullRequest
9 голосов
/ 26 января 2010

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

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

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

Ответы [ 2 ]

1 голос
/ 26 января 2010

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

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

1 голос
/ 26 января 2010

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

document.getElementsByClassName()
...