从另一个弹出一个巨大的弹出窗口时回调没有触发

时间:2014-02-18 08:22:27

标签: magnific-popup

我目前有一个巨大的弹出窗口,在弹出窗口中我有一个链接打开另一个巨大的弹出窗口。有点像:

 $('.logbook-entry-details').magnificPopup({
     type: 'ajax',
     closeBtnInside:true,
     closeOnBgClick:false,
     closeOnContentClick:false,
     callbacks: {
         beforeOpen: function () {
             $.magnificPopup.close();
         },
         open: function() {
             console.log('Popup open has been initiated');
            },
            beforeClose: function() {

            console.log('Popup before close has been initiated');
          },
         close: function() {
            console.log('Popup close has been initiated');

            },
         afterClose :function() {
             console.log('Popup after close has been initiated'); 
            }
         }
 });

阅读后我发现第二个弹出窗口上的回调将不会被注册,直到我关闭原始弹出窗口,因为打开新的弹出窗口只是替换内容而实际上不会重新创建新实例。

我正在试图弄清楚如何在弹出窗口中关闭当前弹出窗口,然后调用代码打开新窗口,以便它可以注册我的回调。

顺便说一句,我试图这样做的原因是我想在关闭我的新弹出窗口后重新打开原始弹出窗口。如果您碰巧有更好的解决方案,请告诉我。

1 个答案:

答案 0 :(得分:5)

所以,如果有人需要这个答案,我必须将以下代码添加到我的新弹出窗口中。

// a button that closes the popup
$('#cancel-logbook-entry-btn').click(function(){
$.magnificPopup.proto.close.call(this);
});

$.magnificPopup.instance.close = function () {

 //code to show the original popup
};

然后在原始弹出窗口中我必须添加,否则它将永远不会关闭弹出窗口

 $.magnificPopup.instance.close = function () {
       // "proto" variable holds MagnificPopup class prototype
       // The above change that we did to instance is not applied to the prototype, 
       // which allows us to call parent method:
       $.magnificPopup.proto.close.call(this);
  };