0

我有一个相当基本的设置:

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

我想做的是让“图像链接”弹出窗口的关闭事件回到原始弹出窗口。我的第一个想法是获取原始元素并可能将其传递给第二个弹出窗口,然后将关闭事件绑定到该元素......这样当它关闭时,它就会自动弹出原始元素。

有没有其他人做过这样的事情?有没有更好的方法可以做到这一点?

4

1 回答 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's 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');
            }
        }
    }
});
于 2013-10-01T20:04:55.323 回答