Применить обратный вызов ко всем экземплярам Magnific Popup?

Есть ли способ связать обратный вызов события, чтобы он вызывался для всех экземпляров Magnific Popup? На сайте, который я создаю, несколько элементов имеют фиксированное положение и «прыгают», когда основная полоса прокрутки браузера исчезает. Я хочу установить обратный вызов, чтобы добавить отступы для этих элементов перед открытием любого всплывающего окна и удалить отступы при закрытии всплывающего окна. Я не хочу повторно использовать обратные вызовы каждый раз, когда я инициализирую всплывающее окно Magnific — я бы предпочел установить один набор обратных вызовов, который запускается каждый раз, когда Magnific открывает и закрывает всплывающее окно.

Моей первой мыслью было использовать делегирование событий и привязку довольно высоко в дереве документов. Я пытался привязаться к событию mfpOpen и прослушать тег BODY, но это не похоже на пузырьки событий. Есть ли другое решение?


person thirdender    schedule 09.09.2014    source источник


Ответы (1)


События отправляются только на целевой элемент или документ (если целевой элемент отсутствует).

Но вы можете глобально переопределить открытую функцию, используя прототип, например:

$.magnificPopup.instance.open = function(data) {

    console.log('before open anything');

    $.magnificPopup.proto.open.call(this,data);

    console.log('after open anything');
};

Вы можете сделать то же самое с функцией close (у нее нет аргументов).

person Dmitry Semenov    schedule 09.09.2014
comment
Могу ли я подключиться к событию, когда отображается следующий или предыдущий элемент галереи? - person Ali Gajani; 02.08.2015