Magnific Popup - всплывающее окно во всплывающем окне. Как заставить «close» перейти в предыдущее всплывающее окно?

0

У меня довольно простая настройка:

 $('.ajax-popup-link').magnificPopup({
        type: 'ajax',
        callbacks: {
            ajaxContentAdded: function () {
                $('.image-link').magnificPopup();
            };
        }
}); 

То, что я хотел бы сделать, - это закрыть событие всплывающего окна "image-link", чтобы вернуться к исходному всплывающему окну. Моя первая мысль состоит в том, чтобы захватить исходный элемент и, возможно, передать его второму всплывающему окну, а затем привязать событие close к этому элементу... так что, когда он закрывается, он просто автоматически всплывает исходный.

Кто-нибудь еще сделал что-нибудь подобное? Есть ли лучший способ сделать это?

Теги:
magnific-popup

1 ответ

1

Вероятно, единственный способ добиться того, что вы хотите, - взять оригинальный элемент и снова открыть его. Но передача его второму всплывающему 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');
            }
        }
    }
});

Ещё вопросы

Сообщество Overcoder
Наверх
Меню