Unbind / Destroy fancybox 2 Ereignisse

7

Ich habe ein merkwürdiges Problem, ich habe Code, der Inhalt über Ajax zieht und dann Fancybox (2) an bestimmte Elemente bindet. Das Problem ist, dass wenn ich diese Seite "aktualisiere", ich die gleiche Funktion anrufe, die Fancybox erneut zieht und bindet.

Mein normaler Ansatz, der sich bis zu Fancybox 2 entwickelt hat, besteht darin, die Elemente zu lösen und erneut zu binden. Dies scheint jedoch nicht mit FB2 zu funktionieren.

Ich habe Folgendes versucht:

%Vor%

Ich habe Folgendes in der Quelldatei bemerkt, was nützlich sein könnte (Startzeile 652):

%Vor%

Wenn hier jemand helfen könnte, wäre das sehr zu begrüßen.

Vielen Dank im Voraus. Nick

    
Nick 23.11.2012, 09:54
quelle

4 Antworten

13

Wenn Sie das Attribut live:false einfügen, können Sie die Handler von Ihren Elementen entfernen, indem Sie .off()

verwenden

Nachdem ich den Quellcode durchforstet habe, habe ich auch festgestellt, dass das spezifische Ereignis click.fb-start ist, wenn Sie es gezielt ansprechen wollen.

Zum Beispiel:

%Vor%

FYI In der Dokumentation heißt es über live :

  

live: Wenn diese Option auf "true" gesetzt ist, verwendet fancyBox "live", um ein Klickereignis zuzuweisen. Einstellen   "false", wenn Sie nur auf die aktuelle Sammlung anwenden müssen, z   mit etwas wie - $ ("#page") .children (). filter ('a'). eq (0) .fancybox ();

jsFidel

Hier ist ein jsFiddle demonstriert

Ссылка

    
OAC Designs 17.12.2012, 02:15
quelle
6

Ich weiß, dass dies ein alter Thread ist, aber ich wollte nur bestätigen, dass OAC Designs absolut richtig ist: Das Binden der .fancybox -Links funktioniert nur, wenn der Parameter live auf false gesetzt ist.

Sie können Fancybox jedoch auch auf Dom-Ebene unabhängig vom live -Parameter zerstören, indem Sie Folgendes tun:

$(document).unbind("click.fb-start");

Oder

$(document).off("click.fb-start");

JSFiddle

Sehen Sie sich JSFiddle als Referenz an.

    
Marventus 06.12.2014 14:55
quelle
0

Sie können diesen Code verwenden, um die fancybox-Funktionalität von Links zu zerstören:

%Vor%     
Oksana 24.12.2012 17:26
quelle
0

Danke für die Antwort, ich habe das obige nicht getestet. Ich habe einen anderen Ansatz gewählt, um das Problem zu lösen.

Was ich getan habe, war, anstatt die Standard-Fancybox-Funktionalität zu verwenden, habe ich Funktionen für wo ich Fancybox und manuell als Fancybox in jedem Fall, die daher das Ereignis nicht binden wollte.

Dies ist nicht der beste Ansatz und das oben genannte ist vielleicht besser, aber ich werde das im neuen Jahr testen:)

Nochmals vielen Dank.

    
Nick 27.12.2012 10:33
quelle