JQuery - FancyBox y devolución de llamada
Pregunta
Tengo un problema con FancyBox.
Quiero escribir una función que se ejecutará cuando el FancyBox abrió. Cómo y cuándo llamar a la función?
Ejemplo:
function myFunc() {
alert("Opened!");
}
$('.content a').fancybox({
'hideOnContentClick': false ,
'callBackOnShow': myFunc(), // This not working! It call function when page is loaded
'frameWidth': 920,
'frameHeight': 530
});
Solución
En lugar de utilización myFunc()
myFunc
. En JavaScript, una función con parens (y / o args) significa que desea llamar. Un nombre de función sin ellos significa lo que desea es una referencia a esa función (que es probablemente lo que quiere de ti FancyBox)
Otros consejos
Esto funciona
$("#element").fancybox({
onStart : function() {
return window.confirm('Continue?');
},
onCancel : function() {
alert('Canceled!');
},
onComplete : function() {
alert('Completed!');
},
onCleanup : function() {
return window.confirm('Close?');
},
onClosed : function() {
alert('Closed!');
}
});
La forma más reciente es cómo hacer que el trabajo está utilizando Aftershow o beforeShow:
$("a#registrace").fancybox({
beforeShow : function() {
alert('its working!');
validate_reg_form();
}
});
Estoy cargando el formulario de inscripción a través de ajax y necesito para permitir la validación de formularios. En ambos casos (antes y después), el contenido ya está cargado.
En realidad, en la comprobación de la documentación, que tiene un error tipográfico en su lista de opciones ...
Has callBackOnShow
pero debe ser callbackOnShow
(minúscula b)
Debe ser: -
function myFunc() {
alert("Opened!");
}
$('.content a').fancybox({
'hideOnContentClick': false ,
'callBackOnShow': myFunc, // no brackets
'frameWidth': 920,
'frameHeight': 530
});
O bien, puede hacer que una función anónima ...
$('.content a').fancybox({
'hideOnContentClick': false ,
'callBackOnShow': function() { alert('hello'); },
'frameWidth': 920,
'frameHeight': 530
});
'callbackOnShow': myFunc
caso inferior b como las opciones de mayúsculas y minúsculas, y no hay soportes en myFunc, como se desea pasar la función como una opción, no la llaman.
A medida que su título dice "Jquery - FancyBox y devolución de llamada", se puede obtener una lista completa de opciones de devolución de llamada para el FancyBox 2 plug-in encontrado en las devoluciones de llamada de tabulación
.http://fancyapps.com/fancybox/#docs
Si su uso de la vieja FancyBox, tal vez de actualizar a fancybox2 como el nuevo plugin tiene mejores características, con más control.