Sizzle
Когда я рассказывал о Sizzle, то решил вас не грузить возможностями по расширению библиотеки, и вот время настало… В Sizzle можно расширять много чего:
Sizzle.selectors.match
Sizzle.selectors.find
Sizzle.selectors.filter
Sizzle.selectors.attrHandle
Sizzle.selectors.pseudos
Но браться мы будем лишь за расширение псевдо-селекторов, наподобие:
Почему я привел только эти фильтры? Всё просто — только они не входят в Sizzle и относятся лишь к jQuery, именно такие плагины мы будем тренироваться разрабатывать. Начнем с кода фильтра :visible
:
Выглядит данный код несложно, но, пожалуй, я-таки дам каркас для нового фильтра и добавлю чуть-чуть пояснений:
Ну, теперь попробуем решить следующую задачку:
— Необходимо выделить ссылку в тексте в зависимости от её типа: внешняя, внутренняя или якорь на странице.
Для решения лучше всего подошли бы фильтры для селекторов следующего вида:
Поскольку «из коробки» данный функционал не доступен, мы напишем его сами. Для этого нам понадобится не так уж и много (пример лишь для последнего :external
, рабочий код на странице sizzle.filter.html):
ВСЕГДА используйте фильтр вместе с HTML-тегом, который ищете:
Это один из пунктов оптимизации работы с фильтрами jQuery, иначе ваш фильтр будет обрабатывать все DOM-элементы на странице, а это может очень сильно сказаться на производительности. Если же у вас несколько тегов, то пишите уж лучше так — $("tag1:filter, tag2:filter, tag3:filter")
, или, ещё лучше, через вызов метода filter()
.
Sizzle Documentation — скудненькая официальная документация
Last updated