2016-07-19 23 views
0

Für jede <a>, die mfp-ajax Klasse wird als Pop-up-Box ausgeführt werden, und diese Pop-up-Box verwenden das Plugin in Magnific-Popup.Magnific-Popup Schließen Callback führt nicht

HTML:

<a href="/target" class="mfp-ajax multiselect-modal">View List</a> 

Javascript:

magnificSetting: { 
    type: 'ajax', 
    mainClass: 'mfp-fade', 
     ajax: { 
      settings: { 
       cache: false 
     } 
    } 
}, 
modals: function() { 
    var self = this; 

    $('a.mfp-ajax').each(function() { 
     var $this = $(this); 
     $this.magnificPopup(self.settings.magnificSetting); 
    }); 
} 

Die Codes funktionieren gut, aber <a> manchmal wird dynamisch in dem DOM erzeugt und ich habe ein separates Skript für Magnific erstellen -Popup Rückrufe. Also, was ich tat, die ich gefolgt, was in der Dokumentation finden Sie in den folgenden Codes:

$(document).on('mfpClose', '.multiselect-modal', function() { 
    console.log('test'); 
}); 

ich diesen Code versucht, aber diese nicht ausgeführt bekommt, wie befestige ich das in einem Element, das dynamisch erzeugt wird, in das DOM und wenn das Pop-up öffnet und der Benutzer es schließt, wird es zu dem obigen Code gehen. Fehle ich hier etwas?

Antwort

1

Leider Magnific Popup intern verwendet triggerHandler() anstelle von Trigger() benutzerdefinierte Ereignisse zu implementieren, so gibt es kein Ereignis für das Dokument zu „hören“, so kann dies nie

$(document).on('mfpClose', '.multiselect-modal', function() { 
console.log('test'); 
}); 

mit den aktuellen Versionen arbeiten Es gibt einen Fix, aber das erfordert, dass Sie globale Ereignisse erstellen, die eine schlechte Praxis ist, so rate ich Ihnen, Callbacks zu verwenden, die in Ihrem Fall so ähnlich geht.

+1

ist ein spezifischer Code das könnte davon abhängen, wofür die modale Verwendung? Zum Beispiel findet die erste Modal-Close-Funktion einige Elemente im DOM und initialisiert sie dann; zweite modale close-Funktionen finden einige Elemente in der DOM ang bekommen ihre Werte. – rpmansion

+0

Sie können Ihren Popups und abhängig von diesem bedingten Ausführungscode einige eindeutige Datenattribute zuweisen. Siehe [this] (http://stackoverflow.com/questions/16885863/magnific-popup-get-current-element-in-callback) wie man das ursprüngliche DOM-Objekt bekommt, so dass man fast alle jquery/dom-Methoden darauf ausführen kann – Viney

+0

Ich konnte es funktionieren lassen, danke :) – rpmansion