У меня довольно простая настройка:
$('.ajax-popup-link').magnificPopup({
type: 'ajax',
callbacks: {
ajaxContentAdded: function () {
$('.image-link').magnificPopup();
};
}
});
То, что я хотел бы сделать, - это закрыть событие всплывающего окна "image-link", чтобы вернуться к исходному всплывающему окну. Моя первая мысль состоит в том, чтобы захватить исходный элемент и, возможно, передать его второму всплывающему окну, а затем привязать событие close к этому элементу... так что, когда он закрывается, он просто автоматически всплывает исходный.
Кто-нибудь еще сделал что-нибудь подобное? Есть ли лучший способ сделать это?
Вероятно, единственный способ добиться того, что вы хотите, - взять оригинальный элемент и снова открыть его. Но передача его второму всплывающему close
вызову не даст вам ничего, потому что он никогда не будет вызван. MagnificPopup
не будет запускать open
событие, если всплывающее окно уже открыто, потому что на самом деле есть только один экземпляр объекта Magnific Popup Object
. Что вы можете сделать, так это проверить, равен ли currItem
всплывающему элементу.
var childOpened,
parentItem,
$parent = $('.ajax-popup-link');
$parent.magnificPopup({
type: 'ajax',
callbacks: {
open: function () {
// triggered only when 1st popup opens
// save 1st popup item
parentItem = this.currItem;
// will not register new callbacks even if we pass them
$('.image-link').magnificPopup();
},
close: function () {
// will be called twice, since we opened popup twice
// do not move to 'afterClose'. 'currItem' is not available there
childOpened = (this.currItem !== parentItem);
},
afterClose: function () {
if (childOpened) {
// should be in 'afterClose' to avoid conflicts
// with previous popup opening
$parent.magnificPopup('open');
}
}
}
});