2013-06-21 2 views
6

Я реализовал Magnific Popup в своих решениях, и я использую Bootbox получить подтверждение от пользователя, что он хочет, чтобы закрыть окно без сохранения изменений и т.д.Magnific Popup действия, прежде чем близко

Я подключил мою пользовательскую функцию до закрыть callback, но он не работает должным образом.

$('#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; 

       } 
      } 
     }); 

Это просто быстрый образец, а не производственный код. Оператор if-else существует, потому что в противном случае диалог Bootbox не отображается (обычно нет необходимости проверять возвращаемое значение, поскольку оно передается как аргумент, который в этом примере называется результатом).

Проблема заключается в том, что после того, как я нажму кнопку закрытия, мое изображение (то есть содержимое всплывающего окна) исчезнет. Я хотел бы иметь возможность отменить операцию закрытия и добиться того, что мне нужно событие, которое будет срабатывать до закрытия всплывающего окна.

Можно ли достичь с помощью Magnific Popup?

ответ

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

Спасибо за ваш ответ, я отдыхаю мой случай :) – Tobiasz

+0

Привет, я разместил вопрос относительно вашего Magnific Всплывающие, я надеюсь, что вы можете помочь http://stackoverflow.com/questions/26272970/image- gallery-with-multiple-title-on-right-side – Learning

+0

Это также полезно для размещения действий после строки close.call, в моем случае обновление контейнера страницы – Kiwizoom

0

Этот код перезапись только в настоящее время открыт всплывающее окно! Если вы откроете такое же всплывающее окно после закрытия, этот обратный вызов исчезнет!

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

    // your code here 

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

};