web-dev-qa-db-fra.com

fermer la boîte fantaisie de la fonction à partir de la "boîte fantaisie" ouverte

Bonjour à tous, je veux pouvoir fermer fancyBox quand il est ouvert de l'intérieur.

J'ai essayé ce qui suit mais en vain:

function closeFancyBox(html){
    var re = /.*Element insert complete!.*/gi;
    if( html.search( re ) == 0 ){
        $.fancybox.close();
        //alert("foo");
    }
}

toto s'ouvrira dans la boîte de dialogue mais ne fermera pas. des allusions?

58
Phil Jackson

Essayez ceci: Parent. $. Fancybox.close ();

Voir Documentation de l'API Fancybox .

158
Matt Furlong

Selon http://fancybox.net/faq

  1. Comment puis-je fermer FancyBox à partir d'un autre élément? ?

Il suffit d'appeler $.fn.fancybox.close() sur votre événement onClick

Vous devriez donc pouvoir ajouter fn.

17
Justin Johnson

Si vous voulez simplement fermer la boîte de fantaisie, il suffit de la fermer.

$('#inline').click(function(){
  $.fancybox.close();
});
9
Ravinder Singh

Il ne sert à rien de mettre le .fn, il se référera au prototype.
Ce que vous devez faire est $ .fancybox.close (); 

Le fait est que vous rencontrez peut-être une autre erreur de js.
Il y a des erreurs à l'écran?
Votre fancybox et jquery sont-ils les dernières versions? Jquery est actuellement en 1.4.1 et fb en 1.3 quelque chose

Faites des expériences en mettant un lien dans la boîte à lettres et mettez-y cette fonction.

Vous l'avez probablement déjà lu, mais en tout cas, http://fancybox.net/api

Une chose que vous devrez probablement probablement faire est d’isoler chaque partie afin de réaliser ce qu’elle est.

9
marcelo-ferraz

j'ai eu les mêmes problèmes un long temps alors j'ai eu la solution par le code ci-dessous . s'il vous plaît utiliser 

parent.jQuery.fancybox.close()
4
azeem

Vous pouvez même fermer fancybox en obtenant l'id du bouton de fermeture et en appelant l'événement click sur cet identifiant.

<input type='button' value='Cancel' onclick='javascript:document.getElementById("fancybox-close").click();' />

Ça marche pour moi!

4
Affan Pathan

Un peu d'un vieux fil mais ...

En fait, je soupçonne que la réponse à la question initiale concernant la fermeture de la fenêtre à partir de dans la fenêtre a plus à voir avec le fait que l’événement click n’est pas lié à l’élément. Si l'événement click est attaché dans document.ready, l'événement ne le sera pas lorsque fancybox créera la nouvelle fenêtre. 

Vous devez réappliquer l'événement click une fois la nouvelle fenêtre. La méthode la plus simple consiste probablement à utiliser la fonctionnalité onComplete. 

Cela fonctionne pour moi:

$(".popup").fancybox({
    'transitionIn'  :   'fade',
    'transitionOut' :   'elastic',
    'speedIn'       :   600, 
    'speedOut'      :   400, 
    'overlayShow'   :   true,
    'overlayColor'  :   '#000022',
            'overlayOpacity'  : 0.8,
            'onComplete' : function(){$('.closer').click(function(){parent.$.fancybox.close();})}
});

En fait, après un peu de réflexion, "vivre" plutôt que "cliquer" ou "lier" pourrait tout aussi bien fonctionner.

3
niccol

Utilisez ceci pour le fermer à la place:

$.fn.fancybox.close();

À en juger par le code source de fancybox, voici comment ils gèrent la fermeture interne.

2
Doug Neiner

Ajoutez $.fancybox.close() à l'endroit où vous souhaitez le déclencher, dans une fonction ou un rappel, à la fin d'un appel ajax!

Woohoo.

1
zillaofthegods

J'ai fini par utiliser:

<script>parent.$("#fancy_close").click();</script>

Je suppose que la version de fancybox que nous avons n’a pas de fonction $ .fancybox.close () pour moi d’appeler :(

Pour info, je voulais juste que la page ferme la fancybox, car elle avait fini son traitement en PHP.

1
Ghost8472

Pour ceux qui ont passé des heures comme moi à trouver la solution pour le type en ligne: window.setTimeout (function () {$. Fancybox.close ()}, 10);

1
Albert Keil

Après avoir lutté avec cela, j'ai trouvé une solution qui fonctionne: il suffit de remplacer le $ par jQueryjQuery.fancybox.close() et d'en faire un script en ligne sur un onClick. Va vérifier si je peux l'appeler du parent

1
karabo

oui, dans Virtuemart, il faut que le bouton soit FERMÉ-continuer à magasiner, et non pas un élément, car après avoir cliqué, vous pouvez rediriger ..

0
Alexey

pour fermer fancybox par funciton il est nécessaire de définir setTimtout à la fonction qui fermera la fancybox Fancybox a besoin de temps pour accepter la fonction de fermeture Si vous appelez directement la fonction ne fonctionnera pas

function close_fancybox(){
$.fancybox.close();
                     }
setTimeout(close_fancybox, 50);
0
user3395039

Dans une iframe, utilisez - parent. $. Fancybox.close ();

0