Метод open является центральным механизмом библиотеки
Featherlight и отвечает за программное открытие модального окна
(lightbox). В отличие от декларативного подхода через HTML-атрибуты
(data-featherlight), open позволяет полностью
контролировать момент открытия, тип контента, параметры отображения и
жизненный цикл модального окна из JavaScript-кода.
open используется как для простых сценариев (открытие
изображения или HTML-фрагмента), так и для сложных динамических случаев:
асинхронная загрузка данных, интеграция с формами, SPA-архитектура,
вложенные окна.
$.featherlight.open(content, options);
Метод является статическим и вызывается через пространство имён
$.featherlight.
Аргументы:
content — источник контента, который будет отображён в
модальном окнеoptions — объект конфигурации, переопределяющий
стандартные настройкиМетод возвращает экземпляр Featherlight, представляющий конкретное открытое окно.
contentТип аргумента content определяет, каким образом
Featherlight интерпретирует данные и какой загрузчик будет
использован.
Наиболее универсальный вариант.
$.featherlight.open('<p>Простой HTML-контент</p>');
В зависимости от содержимого строки Featherlight автоматически выбирает загрузчик:
html#block) → jqueryimageajax или iframe (в
зависимости от настроек)Пример с селектором:
$.featherlight.open('#modalContent');
var element = document.getElementById('content');
$.featherlight.open(element);
или
$.featherlight.open($('#content'));
Контент временно перемещается внутрь lightbox и после закрытия возвращается обратно на исходное место в DOM.
Позволяет динамически формировать контент во время открытия.
$.featherlight.open(function() {
return '<strong>Динамический контент</strong>';
});
Функция может возвращать строку, DOM-элемент или jQuery-объект.
optionsВторой параметр позволяет гибко управлять поведением окна. Все параметры аналогичны тем, что используются при инициализации Featherlight через HTML.
$.featherlight.open('content', {
closeOnClick: false,
closeOnEsc: true
});
optionsМожно принудительно указать тип загрузчика:
$.featherlight.open('page.html', {
type: 'ajax'
});
Поддерживаемые значения type:
htmlimageajaxiframejqueryЭто особенно важно в ситуациях, когда автоматическое определение типа может быть неоднозначным.
open для AJAX-загрузки$.featherlight.open('data/content.html', {
type: 'ajax',
ajax: {
cache: false
}
});
Контент загружается асинхронно, при этом Featherlight автоматически управляет состоянием загрузки и вставкой результата в контейнер.
open
для iframe$.featherlight.open('https://example.com', {
type: 'iframe',
iframeWidth: 800,
iframeHeight: 600
});
Iframe создаётся внутри lightbox, при этом размеры могут задаваться как в пикселях, так и в процентах.
Метод open возвращает объект Featherlight:
var instance = $.featherlight.open('content');
Этот объект предоставляет доступ к внутреннему состоянию окна и его методам.
Через возвращённый экземпляр можно:
instance.close();
instance.$instance; // корневой элемент lightbox
instance.$content; // контейнер с контентом
Это используется для дополнительной стилизации или логики взаимодействия.
Каждый вызов open создаёт новый экземпляр
Featherlight:
$.featherlight.open('Первое окно');
$.featherlight.open('Второе окно');
По умолчанию допускается только одно активное окно. Предыдущее автоматически закрывается, если не включена поддержка вложенных окон через конфигурацию.
openСобытия могут задаваться через options:
$.featherlight.open('content', {
afterOpen: function() {
console.log('Окно открыто');
},
afterClose: function() {
console.log('Окно закрыто');
}
});
Контекст this внутри обработчиков указывает на текущий
экземпляр Featherlight.
В options можно передавать произвольные данные:
$.featherlight.open('content', {
customData: 42,
afterOpen: function() {
console.log(this.customData);
}
});
Это упрощает связь между вызывающим кодом и логикой внутри обработчиков.
openМетод open делает Featherlight не просто
lightbox-библиотекой, а полноценным инструментом для управления
модальными интерфейсами на уровне JavaScript-логики.