2014-02-18 2 views
4

저는 현재 멋진 팝업이 있으며 그 팝업 내에서 또 다른 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'); 
      } 
     } 
}); 

두 번째 팝업에 대한 콜백이 새를 다시하지 않는 사실은 내가 새로운 하나가 바로 컨텐츠를 대체 열기로 원래의 팝업을 닫을 때까지 등록되지 않습니다 발견 예.

내 팝업에서 내 링크를 사용하여 코드를 호출하기 전에 현재 팝업을 닫고 내 콜백을 등록 할 수있는 방법을 찾으려고합니다.

덧붙여서, 내가 이것을하려고하는 이유는, 새로운 팝업을 닫은 후에 원래의 팝업을 재개하고 싶기 때문입니다. 더 나은 해결책을 찾으면 알려주세요.

답변

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); 
    }; 
를 종료하지 않습니다, 그렇지 않으면 추가했다