Sizzle: как работает движок селекторов в jQuery

http://blog.bigbinary.com/2010/02/15/how-jquery-selects-elements-using-sizzle.html

Главное:
Если в браузере доступен document.querySelectorAll(), или достаточно методов document.getElementById() и document.getElementsByTagName(), то запрос к DOM-у будет передан этим методам, и потом ответ будет обёрнут в jQuery.
Интересное наступает, если этими методами обойтись нельзя.
Для примера возьмем старый браузер без document.querySelectorAll() и селектор


Сначала строка разбивается по пробельным символам

Затем справа налево начинаются вызовы к DOM (через jQuery.find())

Для этого сначала проводится проверка одиночного селектора по следующим регулярным выражениям

Вот пример методов, соответствующим типам селекторов

В данном случае будут выбраны все теги a на странице. После этого для каждого будет проверен каждый его родитель на соответствие левому селектору (должен иметь класс header). Делается это методом dirCheck:

Основной смысл его выражен следующей строкой:

Из этого следует, что более специфичные селекторы нужно стараться размещать с самой правой стороны.
А ещё лучше для сложных селекторов делать несколько последовательных вызовов метода find().

Similar Posts

LEAVE A COMMENT