Библиотека Featherlight предоставляет легковесный
способ создания модальных окон и лайтбоксов на сайте. Одним из важных
параметров конфигурации является persist. Этот параметр
управляет тем, как содержимое модального окна сохраняется или
пересоздаётся при его закрытии и повторном открытии. Правильное
понимание и использование persist позволяет оптимизировать
работу с динамическим контентом и улучшить пользовательский опыт.
persistpersist отвечает за поведение DOM-элементов
внутри модального окна после его закрытия:
Если persist: false (значение по умолчанию),
содержимое окна удаляется из DOM при закрытии. Это
означает, что при каждом новом открытии лайтбокса создаётся
новый элемент, что удобно для динамического контента,
загружаемого через AJAX или вставляемого с помощью шаблонов.
Если persist: true, содержимое сохраняется в
DOM, остаётся на месте и повторно используется при следующем
открытии. Такой подход экономит ресурсы и предотвращает повторную
инициализацию элементов, особенно если лайтбокс содержит интерактивные
компоненты, например, формы, слайдеры или видео.
Параметр persist можно передать при инициализации
Featherlight:
// Инициализация с persist = true
$.featherlight('#modal-content', {
persist: true
});
// Инициализация с persist = false
$.featherlight('#modal-content', {
persist: false
});
persist может использоваться как при
инициализации через JavaScript, так и через
атрибуты HTML:
<a href="#modal-content" data-featherlight="inline" data-featherlight-persist="true">Открыть окно</a>
persist: trueСодержимое не удаляется из DOM после закрытия.
Возможность сохранять состояние элементов внутри лайтбокса. Например:
Позволяет избежать повторной инициализации скриптов для контента, который создаётся динамически.
Пример:
$('#openModal').featherlight('#modal-content', {
persist: true
});
// При закрытии и повторном открытии текст в input сохраняется
persist: falseСодержимое удаляется из DOM при закрытии окна.
При следующем открытии элемент создаётся заново, что подходит для динамического контента:
Пример:
$('#openModal').featherlight(function(){
return $.ajax({
url: '/dynamic-content.html',
method: 'GET'
});
}, {
persist: false
});
В этом случае каждый вызов делает новый AJAX-запрос и создаёт свежий элемент, а старый автоматически удаляется.
targetAttr: если контент берётся из
атрибута, persist: true сохранит его в DOM после первого
открытия.afterClose: при
persist: false можно использовать этот хук для очистки
дополнительных данных или состояния.beforeOpen / afterOpen:
при persist: true эти хуки часто используются для
обновления содержимого, не уничтожая сам элемент.$.featherlight('#modal-content', {
persist: true,
afterOpen: function(event){
console.log('Модальное окно открыто, состояние сохранено');
}
});
persist: true экономит ресурсы и ускоряет работу.persist: false гарантирует актуальность данных и
предотвращает накопление устаревших элементов в DOM.persist: true, чтобы не терять введённые
данные при случайном закрытии.persist: false с кэшированием
данных, чтобы избежать лишних запросов.Параметр persist является ключевым инструментом для
контроля жизненного цикла элементов в Featherlight. Его
грамотное использование позволяет создавать как лёгкие одноразовые
модальные окна, так и интерактивные компоненты с сохранением состояния,
оптимизируя производительность и упрощая работу с динамическим
контентом.