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?
Essayez ceci: Parent. $. Fancybox.close ();
Selon http://fancybox.net/faq
- 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
.
Si vous voulez simplement fermer la boîte de fantaisie, il suffit de la fermer.
$('#inline').click(function(){
$.fancybox.close();
});
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.
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()
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!
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.
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.
Ajoutez $.fancybox.close()
à l'endroit où vous souhaitez le déclencher, dans une fonction ou un rappel, à la fin d'un appel ajax!
Woohoo.
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.
Pour ceux qui ont passé des heures comme moi à trouver la solution pour le type en ligne: window.setTimeout (function () {$. Fancybox.close ()}, 10);
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
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 ..
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);
Dans une iframe, utilisez - parent. $. Fancybox.close ();