Спорадически, в течение каждого месяца, мы будем публиковать видео-подсказку «Рассеяние jQuery». Идея, лежащая в основе этого, состоит в том, что мы будем брать по одной порции исходного кода jQuery , разбивать его и точно определять, что происходит, так сказать, под капотом. Затем с этим знанием мы узнаем, как лучше использовать библиотеку в нашем коде. Сегодня мы рассмотрим фильтры.
Также доступно в этой серии:
- Рассеяние jQuery — Фильтры
- Рассеивание jQuery — текстовый метод
Источник jQuery для :hidden
фильтра
01
02
03
04
05
06
07
08
09
10
|
jQuery.expr.filters.hidden = function( elem ) {
var width = elem.offsetWidth, height = elem.offsetHeight,
skip = elem.nodeName.toLowerCase() === «tr»;
return width === 0 &&
true :
width > 0 &&
false :
jQuery.curCSS(elem, «display») === «none»;
};
|
The :visible
фильтр
Весьма разумно, что фильтр :visible
должен вызывать только hidden
метод и возвращать ответ.
1
2
3
|
jQuery.expr.filters.visible = function( elem ) {
return !jQuery.expr.filters.hidden( elem );
};
|
Полный скринкаст
); «> Исходный код jQuery для просмотра списка других полезных фильтров, доступных вам.
Использование этих знаний для расширения jQuery
<Скрипт> $ ('p: first'). data ('info', 'value'); // заполняет объект данных $ для работы $ .Extend ( jQuery.expr [":"], { block: function (elem) { return $ (elem) .css ("display") === "block"; }, hasData: function (elem) { return! $. isEmptyObject ($ (elem) .data ()); } } ); $ ("p: hasData"). text ("имеет данные"); // получает параграфы, к которым прикреплены данные $ ("p: block"). text ("это уровень блока"); // захватывает только абзацы с отображением «блока» </ Скрипт>
Примечание:
jQuery.expr[':']
— это просто псевдоним дляjQuery.expr.filters
.
Будьте на связи. В будущих эпизодах мы продолжим выделять фрагменты исходного кода jQuery и анализировать их!