Page 32 - jQuery для начинающих
P. 32
Sizzle
Пропустите это раздел, и вернитесь к нему тогда, когда вас заинтересует, как
происходит поиск элементов внутри «$»
В качестве «поисковика» по элементам DOM'а jQuery использует библиотеку Sizzle. Данная
библиотека одно время была неотъемлемой частью jQuery, затем «отпочковалась» в
отдельный проект, который с радостью использует как сам jQuery, так и Dojo Toolkit. Но
хватит лирики, давайте перейдем непосредственно к поиску, для оного в JavaScript'е
предусмотрены следующие методы (не в jQuery, не в Sizzle, в JavaScript'е):
getElementById(id) – поиск по id="…"
getElementsByName(name) – поиск по name="name" и id="name"
getElementsByClassName(class) – поиск по class="class"
getElementsByTagName(tag) – поиск по тегу
querySelectorAll(selector) – поиск по произвольному CSS селектору
Пробежавшись беглым взглядом по списку, можно заметить метод querySelectorAll() –
он универсален и действительно удобен, да, именно этот метод фреймворк пытается
дёрнуть, когда вы скармливаете что-то в качестве селектора в jQuery, но данный метод
иногда нас подводит, и тогда на сцену выходит Sizzle во всей красе, вооруженный всеми
упомянутыми методами, да еще со своим уникальным арсеналом:
if (document.querySelectorAll) (function(){
var oldSelect = select
/* ... */
select = function( selector, context, results, seed, xml ) {
// используем querySelectorAll когда нет фильтров в запросе,
// когда это запрос не по xml объекту,
// и когда не обнаружено проблем с запросом
// еще есть пару проверок, которые я опустил для наглядности
try {
push.apply(
results,
slice.call(context.querySelectorAll( selector ), 0)
32
www.trk.kg