2013-09-24 3 views
0

У меня есть довольно основные настройки:Magnific Popup - всплывающее окно всплывающего окна. Как заставить «закрыть» перейти к предыдущему всплывающему окну?

$('.ajax-popup-link').magnificPopup({ 
     type: 'ajax', 
     callbacks: { 
      ajaxContentAdded: function() { 
       $('.image-link').magnificPopup(); 
      }; 
     } 
}); 

То, что я хотел бы сделать, это близкое событие «изображение-ссылку» всплывающее окно вернуться к первоначальному всплывающем окне. Моя первая мысль состоит в том, чтобы захватить исходный элемент и, возможно, передать его второму всплывающему окну, а затем привязать событие close к этому элементу ... так что, когда он закрывается, он просто автоматически всплывает исходный.

Кто-нибудь еще сделал что-нибудь подобное? Есть ли лучший способ сделать это?

ответ

1

Возможно, единственный способ достичь желаемого - взять оригинальный элемент и снова открыть его. Но передача его во второй вызов popup close не даст вам ничего, поскольку он никогда не будет вызван. MagnificPopup не запускает событие open, если всплывающее окно уже открыто, потому что на самом деле существует только один экземпляр Magnific Popup Object. Что вы можете сделать, так это проверить, равен ли currItem первому всплывающему пункту.

var childOpened, 
    parentItem, 
    $parent = $('.ajax-popup-link'); 
$parent.magnificPopup({ 
    type: 'ajax', 
    callbacks: { 
     open: function() { 
      // triggered only when 1st popup opens 
      // save 1st popup's item 
      parentItem = this.currItem; 
      // will not register new callbacks even if we pass them 
      $('.image-link').magnificPopup(); 
     }, 
     close: function() { 
      // will be called twice, since we opened popup twice 
      // do not move to `afterClose`. `currItem` is not available there 
      childOpened = (this.currItem !== parentItem); 
     }, 
     afterClose: function() { 
      if (childOpened) { 
       // should be in `afterClose` to avoid conflicts 
       // with previous popup opening 
       $parent.magnificPopup('open'); 
      } 
     } 
    } 
}); 
Смежные вопросы