Featherlight — это лёгкая и гибкая библиотека для создания модальных
окон на JavaScript. Одним из ключевых инструментов настройки поведения
модальных окон является параметр filter. Он позволяет точно
определять элементы, на которых будет инициироваться открытие окна, что
особенно важно при работе с динамическим содержимым или множеством
ссылок на одной странице.
filterПараметр filter задаётся при инициализации Featherlight
и служит для выбора конкретных элементов из группы
элементов-инициаторов, которые будут активировать модальное
окно. По сути, filter работает как селектор внутри уже
выбранного набора элементов, что позволяет ограничить область действия
всплывающего окна.
Пример базовой инициализации:
$('.gallery a').featherlight({
filter: '.lightbox'
});
В этом примере Featherlight будет открывать модальное окно только для
ссылок с классом .lightbox внутри контейнера
.gallery. Все остальные ссылки внутри .gallery
не будут реагировать на клик.
filterfilter поддерживает несколько способов задания:
$('.menu a').featherlight({
filter: 'a[data-lightbox="true"]'
});
true для элементов,
которые должны открывать модальное окно.$('.items a').featherlight({
filter: function(element){
return $(element).data('active') === true;
}
});
$('.list a').featherlight({
filter: '.first, .second'
});
filter применяется только на этапе
клика. То есть Featherlight сначала ищет все элементы, к
которым прикреплён обработчик, а затем проверяет каждый клик на
соответствие фильтру.filter не задан, модальное окно будет открываться
для всех элементов, к которым привязана
инициализация.data-*).Фильтрация по атрибуту data-*:
$('ul.photos li a').featherlight({
filter: '[data-featured="true"]'
});
В этом случае окно откроется только для фотографий с атрибутом
data-featured="true".
Фильтрация с учётом видимости элемента:
$('.menu a').featherlight({
filter: function(el){
return $(el).is(':visible');
}
});
Модальное окно будет открываться только для видимых ссылок, игнорируя скрытые элементы.
Комбинированный фильтр для сложных списков:
$('.products a').featherlight({
filter: '.available, [data-sale="true"]'
});
Окно откроется для ссылок, которые имеют класс
.available или атрибут data-sale="true".
Параметр filter тесно связан с параметрами
selector и delegate:
selector определяет контейнер, внутри
которого ищутся элементы.delegate позволяет делегировать обработку событий клика
на родительский элемент, а filter уточняет, какие дочерние
элементы действительно вызывают модальное окно.Пример совместного использования:
$('#gallery').featherlight({
selector: 'a',
filter: '.highlighted'
});
Здесь обработчик прикрепляется ко всем ссылкам в
#gallery, но открывать окно будут только ссылки с классом
.highlighted.
Параметр filter делает Featherlight мощным инструментом
для управления интерактивными элементами на странице, обеспечивая точный
контроль над тем, что вызывает модальное окно, и позволяя легко
интегрировать библиотеку в сложные интерфейсы.