Параметр beforeOpen в Featherlight представляет собой
функцию обратного вызова, которая выполняется
непосредственно перед открытием модального окна. Он
позволяет управлять процессом открытия, изменять содержимое, выполнять
проверку условий или предотвращать открытие при необходимости.
beforeOpen задается при инициализации Featherlight
следующим образом:
$.featherlight({
beforeOpen: function(event) {
// Код, который выполнится перед открытием модального окна
}
});
event — объект события, содержащий информацию о
триггере открытия.this внутри функции ссылается на экземпляр
Featherlight, что позволяет обращаться к методам и свойствам
модального окна.Пример использования для изменения содержимого перед открытием:
$.featherlight({
beforeOpen: function(event) {
this.$content.text("Содержимое обновлено перед открытием");
}
});
В этом примере текст модального окна заменяется на новый до его отображения пользователю.
beforeOpen часто применяется в связке с селекторами
элементов:
$('.open-modal').featherlight({
beforeOpen: function(event) {
console.log("Модальное окно будет открыто для элемента:", event.currentTarget);
}
});
event.currentTarget содержит элемент, по которому
кликнул пользователь.false для предотвращения открытияЕсли функция beforeOpen возвращает false,
открытие модального окна отменяется:
$.featherlight({
beforeOpen: function() {
if (!userIsLoggedIn) {
alert("Необходимо войти в систему");
return false; // Окно не откроется
}
}
});
Внутри beforeOpen доступны следующие ключевые свойства
экземпляра Featherlight:
this.$instance — jQuery-объект контейнера модального
окна.this.$content — содержимое окна.this.$currentTarget — элемент, инициировавший открытие
(эквивалент event.currentTarget).this.settings — объект настроек Featherlight для
текущего окна.Пример изменения стиля окна перед открытием:
$.featherlight({
beforeOpen: function() {
this.$instance.css({
backgroundColor: '#f0f0f0',
border: '2px solid #333'
});
}
});
beforeOpenbeforeOpen поддерживает асинхронные операции при
использовании промисов. Открытие окна будет выполнено
после завершения асинхронного кода:
$.featherlight({
beforeOpen: function() {
var self = this;
return new Promise(function(resolve) {
setTimeout(function() {
self.$content.text("Данные загружены асинхронно");
resolve();
}, 1000);
});
}
});
afterOpenbeforeOpen выполняется до отображения
окна, позволяет модифицировать содержимое и отменять
открытие.afterOpen срабатывает после того, как окно уже
появилось, используется для анимаций, фокусировки или
последующих действий.beforeOpenevent.currentTarget и
this.$currentTarget.return false.Использование beforeOpen делает модальные окна
Featherlight гибкими и управляемыми на этапе подготовки к
открытию, что особенно важно при динамическом содержимом и
проверках условий.