Действие Magnific Popup перед закрытием

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

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

$('#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 не отображается (обычно нет необходимости проверьте возвращаемое значение, как оно передается в качестве аргумента, который в этом примере называется result ).

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

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

2 ответов


  // 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


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

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

  // your code here

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

};