Comment fermer une fancybox jQuery à partir d'un clic de bouton
j'utilise fantaisie boîte pour créer un popup et charger une autre page dessus en utilisant une iframe. voici mon code
<script type="text/javascript">
$(document).ready(function() {
$('.calendar .day').click(function() {
day_num = $(this).find('.day_num').html();
day_data = prompt('Enter Stuff', $(this).find('.content').html());
if (day_data != null) {
$.ajax({
url: window.location,
type: 'POST',
data: {
day: day_num,
data: day_data
},
success: function(msg) {
location.reload();
}
});
}
});
});
$(document).ready(function(){
$("a.iframeFancybox1").fancybox({
'width' : 800,
'height' : 650,
'overlayOpacity' : '0.4',
'overlayColor' : '#000',
'hideOnContentClick' : false,
'autoScale' : false,
'transitionIn' : 'elastic',
'transitionOut' : 'elastic',
'type' : 'iframe'
});
});
</script>
Il charge la page correctement et ne les choses. Mais au lieu de fermer la forme popup, il charge la forme source popup à l'intérieur du popup lui-même. Je veux fermer le formulaire popup lorsque le travail est terminé et retourner à la page de menu principal à partir de laquelle le popup a été généré. Comment puis-je atteindre cela sur un clic de bouton de la popup forme.
Salutations, Rangana
9 réponses
appel $.fancybox.close();
regardez aussi ces réponses dans le post
Selon http://fancybox.net/faq
- Comment fermer FancyBox à partir d'un autre élément? ?
appel
$.fn.fancybox.close()
sur votre événement onClick
alors vous devriez juste pouvoir ajouter dans le fn
.
j'ai eu à utiliser parent.jQuery.fancybox.close()
mon Drupal site pour que cela fonctionne correctement.
Vous pouvez utiliser inline appeler
<input type="button" onclick="$.fancybox.close()" value="CloseFB" />
ou vous pouvez utiliser la fonction appelée
<script>
function closeFB() {
// Before closing you can do other stuff, like page reloading
$("#destination_div").load("?v=staff #source_div_with_content");
// After all you can close FB
$.fancybox.close();
}
</script>
<input type="button" onclick="closeFB()" value="CloseFB" />
c'est un vieux fil, mais j'ai pensé partager mes deux cents.
j'avais des problèmes similaires avec la fermeture de la FancyBox iframe en utilisant l'événement onclick et après de nombreux essais, cela a fait le tour pour moi: fenêtre.parent.jQuery.fancybox.fermer()
voici un exemple utilisant un bouton d'entrée:
<input type="button" class="formbutton" value="Close" onClick="window.parent.jQuery.fancybox.close();" />
de plus, j'ai testé le onlick sur une étiquette anchor (a) et ça a bien marché.
$.fn.fancybox.close()
ne fonctionne pas pour la version 2.x, en fait, il génère une erreur. Si vous utilisez la version 2.x, essayez $.fancybox.close(true)
à la place.
en raison de mon bouton de fermeture a différentes fonctions: close popup, et fermer fancybox. Il doit utiliser l'e.stopPropagation() pour arrêter l'événement de propagation;
$('.close-btn').on('click', function(e) {
e.preventDefault();
e.stopPropagation();
$(this).parent().hide();
$.fancybox.close();
});
Cela fonctionne pour moi...
<script type="text/javascript" src="../../js/jquery-ui.js"></script>
<script src="../../js/fancybox-2.1.5/jquery.fancybox.js" type="text/javascript"></script>
<script src="../../js/fancybox-2.1.5/jquery.fancybox.pack.js" type="text/javascript"></script>
<link href="../../js/fancybox-2.1.5/jquery.fancybox.css" rel="stylesheet" type="text/css" />
<script lang="javascript">
var J$ = jQuery.noConflict();
function SelectAndClose() {
txtValue = document.getElementById('<%= _browseTextBox.ClientID %>').value;
window.returnValue = txtValue.value;
var isOpera = !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0;
// Opera 8.0+ (UA detection to detect Blink/v8-powered Opera)
var isFirefox = typeof InstallTrigger !== 'undefined'; // Firefox 1.0+
var isSafari = Object.prototype.toString.call(window.HTMLElement).indexOf('Constructor') > 0;
// At least Safari 3+: "[object HTMLElementConstructor]"
var isChrome = !!window.chrome && !isOpera; // Chrome 1+
var isIE = /*@cc_on!@*/false || !!document.documentMode; // At least IE6
if (isIE == true) {
//alert("iexcplorer");
parent.J$.fancybox.close();
//document.getElementById("closeFancyInternet").click();//For IExplorer
}
else {
//alert("another one");
document.getElementById("closeFancy").click(); //For Firefox
}
return false;
}
function closeBrowsing() {
document.getElementById("closeFancy").click();
window.close();
return false;
}
</script>
Si vous souhaitez vérifier que votre navigateur doit voir ce lien: http://jsfiddle.net/9zxvE/383/
utiliser le bouton event close de fancybox:
document.getElementsByClassName("fancybox-item fancybox-close")[0].click();