2009-05-26 18 views
8

Ho un problema con fancybox.
Voglio scrivere una funzione che verrà eseguita quando la fancybox è stata aperta. Come e quando chiamare la funzione?Jquery - fancybox e callback

Esempio:

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 
}); 
+3

Se le persone vengono qui e stanno cercando il callback per la nuova versione di Fancybox: verificare l'attributo "onComplete". – AsTeR

+6

Per fancybox versione 2 o successiva è stato cambiato in afterLoad. http://fancyapps.com/fancybox/#docs – coderates

risposta

24

Invece di myFunc() uso myFunc. In javascript, una funzione con Parents (e/o Arg) significa che vuoi chiamarla. Un nome di funzione senza di loro significa che si desidera solo un riferimento a quella funzione (che è probabilmente quello che fancybox vuole da voi)

2

dovrebbe essere: -

function myFunc() { 
    alert("Opened!"); 
} 

$('.content a').fancybox({ 
    'hideOnContentClick': false , 
    'callBackOnShow': myFunc, // no brackets 
    'frameWidth': 920, 
    'frameHeight': 530 
}); 

In alternativa, è possibile effettuare una funzione anonima .. .

$('.content a').fancybox({ 
    'hideOnContentClick': false , 
    'callBackOnShow': function() { alert('hello'); }, 
    'frameWidth': 920, 
    'frameHeight': 530 
}); 
2

in realtà, il controllo dei documenti, si dispone di un errore di battitura nella tua lista di opzioni ...

Hai callBackOnShow ma dovrebbe essere callbackOnShow (inferiore caso b) caso

2
'callbackOnShow': myFunc 

inferiore B come le opzioni sono case sensitive, e senza staffe sul myFunc, come si desidera passare alla funzione come opzione, non chiamarlo.

10

Questo funziona

$("#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!'); 
    } 
}); 
+0

Super post, Tankx – Hearaman

+2

Mi chiedo, perché i callback originali non hanno funzionato: http://fancyapps.com/fancybox/#docs – mirelon

9

Il nuovo modo come farlo lavoro sta usando Aftershow o beforeShow:

$("a#registrace").fancybox({ 
    beforeShow : function() { 
    alert('its working!'); 
    validate_reg_form(); 
    } 
}); 

sto Caricando il modulo di registrazione tramite ajax e ho bisogno di abilitare form-validazione. In entrambi i casi (prima e dopo), il contenuto è già caricato.

0

Come dice il titolo "Jquery - fancybox e callback", è possibile un elenco completo delle opzioni di callback per il plug-in fancybox 2 che si trova sotto i callback della scheda.

http://fancyapps.com/fancybox/#docs

Se la vostra utilizzando il vecchio fancybox, forse l'aggiornamento a fancybox2 come il nuovo plugin ha caratteristiche migliori, con più controllo.