2013-06-21 20 views
6

I wprowadziły Magnific Popup w moich rozwiązań i używam Bootbox uzyskać potwierdzenie od użytkownika, który chce, aby zamknąć okno bez zapisywania zmian, itpMagnific działanie Popup przed bliskim

mogę podłączyć mój niestandardową funkcję na zamknij oddzwanianie, ale nie działa zgodnie z oczekiwaniami.

$('#divThumbnails').magnificPopup({ 
      delegate: 'a', 
      type: 'inline', 
      midClick: true, 
      callbacks: { 
       close: function() { 
        var confirm = bootbox.confirm('Are you sure?', function(result) { 
        }); 

        if (confirm) 
         return true; 
        else 
         return false; 

       } 
      } 
     }); 

To tylko szybka próbka, a nie kod produkcyjny. Instrukcja if-else istnieje, ponieważ w przeciwnym razie okno dialogowe Bootbox nie zostanie wyświetlone (zwykle nie ma potrzeby sprawdzania zwróconej wartości, ponieważ jest ona przekazywana jako argument, który w tym przykładzie nazywa się wynikiem).

Problem polega na tym, że po kliknięciu przycisku zamykania obraz (który jest zawartością podręcznego okna) znika. Chciałbym mieć możliwość anulowania operacji zamknięcia i aby to osiągnąć potrzebuję zdarzenia, które zostanie uruchomione PRZED zamknięciem popup.

Czy można to osiągnąć za pomocą Magnific Popup?

Odpowiedz

20
// this part overrides "close" method in MagnificPopup object 
    $.magnificPopup.instance.close = function() { 

     if (!confirm("Are you sure?")) { 
      return; 
     } 

     // "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); 
    }; 

http://codepen.io/dimsemenov/pen/edCgo

+0

Dziękuję za odpowiedź, I reszta moim przypadku :) – Tobiasz

+0

Cześć, mam pytanie co napisali swojej magnific Podręczne, mam nadzieję, że możesz pomóc http://stackoverflow.com/questions/26272970/image- gallery-with-multiple-title-on-right-side – Learning

+0

Jest to również przydatne do umieszczania akcji po linii close.call, w moim przypadku odświeżenie kontenera strony – Kiwizoom

0

Ten kod nadpisywania tylko aktualnie otwarte okienko! Jeśli otworzysz to samo popup po zamknięciu, to oddzwonienie zniknie!

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

    // your code here 

    // this actually close popup 
    $.magnificPopup.proto.close.call(this); 

};