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
});
¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top