7
votes

Comment manipuler globalement l'événement de clos de Fancybox?

J'utilise FANCYBOX dans mon application. Maintenant, pour gérer l'événement étroit, nous écrivons quelque chose comme: xxx

vu sur cette page doc:

Http:/fancyapps.com/fancybox/#docs

Cependant, je veux écrire quelque chose de courant et global à toutes les fantaisies qui gèrent chaque fois que les Fancybox. Comment je fais ça? En bref, je ne veux pas écrire le code d'ONCLOSE sur chaque FANCYBOX et que vous ne voulez pas qu'il soit dépendant de la classe, ID (par exemple, .fancybox dans ce cas). Comment je fais ça? J'ai essayé d'écrire: xxx

mais cela ne fonctionne pas et de la DOCS semble être la fonction d'ouverture programmatique.


2 commentaires

La chose la plus étrange à propos de cette question (et sa réponse acceptée) est que onclose n'est pas une option valide (rappel) ni pour FANCYBOX V1.3.X ou V2.X. Vous vous référez à Fancyapps.com/fancybox/#docs mais il n'y a rien à propos de ce sur la close Option API API ( ONCLOSED est une option valide pour FANCYBOX V1.3.3 et il est documenté à FancyBox.net).


@JFK: Merci d'avoir souligné. Je ne suis pas réalisé que c'était une faute de frappe ni Antonio. Mais ce n'est pas bizarre. C'était ma faute de frappe et la réponse a une faute de frappe parce que ma question a une faute de frappe. Les fautes de frappe sont acceptées. J'ai accepté la réponse en raison du concept qu'il a fourni et lorsque j'ai mis en œuvre le concept, il semble fonctionner. BTW, qu'est-ce que je voulais vraiment dire était weforeclose événement. J'espère que c'est là dans API;)


4 Réponses :


5
votes

Je ne suis pas sûr que ce soit la meilleure solution, mais j'irais pour un pub / sous-modèle, dans votre fantaisie, vous devriez faire quelque chose comme ça. XXX PRE>

Puis, quelque part dans votre code: p>

$( window ).on( 'fancyboxClosed', function () {
    // Your global function for fancybox closed
} );


2 commentaires

C'est bon mais cela signifie toujours que j'ai écrit $ (fenêtre) .Trigger ("FancyboxClosed"); pour chacun des fantaisies.


C'est l'inconvénient. Vous pouvez également pirater FANCYBOX pour déclencher l'événement chaque fois que vous n'avez pas besoin d'écrire.



2
votes

De ce que je vois, Fancybox ne fournit aucune API pour cela. Vous pouvez plutôt utiliser un hack. La Lightbox est fermée lorsque:

  1. Bouton Fermer est cliqué (div avec la classe 'Fancybox-Fermer')
  2. Fond noir est cliqué sur (div avec classe 'FANCYBOX-OverLay')
  3. Bouton d'échappement est enfoncé (E.Qui = 27)

    Donc, vous pouvez ajouter un gestionnaire de clic au corps pour vérifier si l'événement.Target est une superposition .Fancybox-Fermer ou .fancybox-superposition. Ajoutez également un gestionnaire de clé au document à écouter si une touche d'échappement est enfoncée.


1 commentaires

une autre option: 4. Quand quelque chose appelle $.fancybox.frose ();



4
votes

Essayez d'utiliser des méthodes

Beforeclose ou après-gamme

Ce code fonctionne bien xxx


0 commentaires

0
votes

Voici une solution décente pour 1.3.4 xxx

pour une version autre que 1.3.4 Vérifiez les sélecteurs d'élément FANCYBOX pour la superposition et le bouton fermer à l'aide de la libellule, de la luciole ou d'autres .


0 commentaires