Domanda

Ho problemi con fancybox.
Voglio scrivere una funzione che verrà eseguito quando il fancybox aperto. Come e quando chiamare la funzione?

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
});
È stato utile?

Soluzione

Invece di utilizzo myFunc() myFunc. In javascript, una funzione con parentesi (e / o args) significa che si voglia chiamare. Un nome di funzione senza di loro significa che si desidera solo un riferimento a tale funzione (che è probabilmente ciò che fancybox vuole da voi)

Altri suggerimenti

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!');
    }
});

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.

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

Hai callBackOnShow ma dovrebbe essere callbackOnShow (minuscola b)

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
});
'callbackOnShow': myFunc
caso

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

Come il titolo dice "Jquery - fancybox e callback", è possibile un elenco completo delle opzioni di richiamata per il plugin fancybox 2 trovati nella scheda callback

.

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top