afterClose — это один из ключевых параметров библиотеки
Featherlight, отвечающий за выполнение определённых
действий после закрытия модального окна. Он является
частью объекта настроек при инициализации Featherlight и представляет
собой функцию обратного вызова.
Параметр afterClose используется для выполнения логики,
которая должна произойти только после полного закрытия
всплывающего окна, когда модальное окно полностью удалено из
DOM или скрыто. В отличие от события beforeClose, которое
срабатывает перед началом анимации закрытия, afterClose
гарантирует, что пользовательский код выполняется уже после завершения
всех визуальных эффектов.
Примеры типичных задач:
При использовании Featherlight параметр afterClose
указывается внутри объекта настроек:
$.featherlight('<p>Пример содержимого</p>', {
afterClose: function() {
console.log('Модальное окно закрыто');
}
});
Здесь функция обратного вызова не принимает аргументов по умолчанию,
но внутри неё можно ссылаться на контекст модального окна через
this.
thisВнутри функции afterClose this указывает на
текущий экземпляр Featherlight. Основные свойства экземпляра:
this.$content — jQuery-объект содержимого окна.this.$instance — корневой jQuery-объект модального
окна.this.close() — метод для принудительного закрытия (хотя
к моменту вызова afterClose окно уже закрыто).Пример использования контекста:
$.featherlight('<div class="form-wrapper">Форма</div>', {
afterClose: function() {
this.$content.find('input').val(''); // очистка полей формы
}
});
Featherlight поддерживает анимацию закрытия модальных окон.
afterClose срабатывает после завершения
анимации, что позволяет безопасно запускать любые действия, не
опасаясь того, что элементы ещё видимы на экране.
Пример с кастомной анимацией:
$.featherlight('<p>Контент с анимацией</p>', {
closeSpeed: 300, // скорость закрытия в миллисекундах
afterClose: function() {
console.log('Закрытие завершено через 300 мс');
}
});
Когда содержимое модального окна загружается динамически (например,
через AJAX), afterClose особенно полезен для
очистки DOM и освобождения ресурсов:
$.featherlight({
ajax: 'content.html',
afterClose: function() {
$('#temporary-container').remove(); // удаляем временный контейнер
}
});
В этом примере afterClose гарантирует, что удаление
элементов произойдет только после того, как модальное окно исчезнет с
экрана.
beforeClosebeforeClose срабатывает перед
началом закрытия и может быть использован для предотвращения
закрытия, если вернуть false.afterClose срабатывает после
завершения закрытия, и на этом этапе модальное окно уже
недоступно визуально.$.featherlight('<p>Проверка</p>', {
beforeClose: function() {
console.log('Начало закрытия');
},
afterClose: function() {
console.log('Окончание закрытия');
}
});
afterClose часто комбинируют с другими параметрами
Featherlight для полной настройки поведения:
afterOpen — действия после открытия окна.beforeClose — контроль перед закрытием.closeOnClick — управление закрытием по клику вне
окна.persist — сохранение содержимого между открытиями.Пример комплексного использования:
$.featherlight('<div>Контент</div>', {
afterOpen: function() {
console.log('Модальное окно открыто');
},
beforeClose: function() {
console.log('Закрытие инициировано');
},
afterClose: function() {
console.log('Модальное окно окончательно закрыто');
}
});
afterClose для очистки
динамического контента и временных элементов.afterClose.afterClose для предотвращения побочных эффектов при
повторном открытии.afterClose обеспечивает безопасное место для
финальных действий после работы модального окна,
сохраняя при этом всю анимацию и визуальные эффекты Featherlight
нетронутыми. Это делает его незаменимым инструментом при построении
сложных пользовательских интерфейсов с динамическим контентом и
интерактивными элементами.