Page 103 - jQuery для начинающих
P. 103
Sizzle
Когда я рассказывал о Sizzle я решил вас не грузить возможностями по расширению
библиотеки, но вот время настало… В Sizzle можно расширять много чего:
— Sizzle.selectors.match
— Sizzle.selectors.find
— Sizzle.selectors.filter
— Sizzle.selectors.attrHandle
— Sizzle.selectors.pseudos
Но браться мы будем лишь за расширение псевдо-селекторов:
$("div:animated"); // поиск анимированных элементов
$("div:hidden"); // поиск скрытых элементов div
$("div:visible"); // поиск видимых элементов div
Почему я привел только эти фильтры? Всё просто — только они не входят в Sizzle, и
относятся лишь к jQuery, именно такие плагины мы будем тренироваться разрабатывать.
Начнем с кода фильтра «:hidden»:
// пример для расширения Sizzle внутри jQuery
// для расширения самого Sizzle нужен чуть-чуть другой код
jQuery.expr.filters.hidden = function( elem ) {
// проверяем ширину и высоту каждого элемента в выборке
return elem.offsetWidth === 0 || elem.offsetHeight === 0;
};
Выглядит данный код несложно, но, пожалуй, я таки дам каркас для нового фильтра и
добавлю чуть-чуть пояснений:
$.extend($.expr[':'], {
/**
* @param element DOM элемент
* @param i порядковый номер элемента
* @param match объект матчинга регулярного выражения
* @param elements массив всех найденных DOM элементов
*/
test: function(element, i, match, elements) {
return true || false; // выносим вердикт
}
})
103
www.trk.kg