2011-01-04 18 views
7

Ciao mi chiedevo se è possibile passare una variabile da fancybox child a genitore una volta che il figlio è chiuso?fancybox - passa la variabile al genitore quando la finestra di fancybox è chiusa

Qualsiasi informazione è molto apprezzata.

saluti,

Phil

EDIT **

function cleanUp(){ 
    var bla = $("#fancybox-frame").contents().find('input[name=pd_id]'); 
    alert(bla.val()); 
} 
$("#tree .product a[class!=copy]").fancybox({ 
    'width'    : 770, 
    'height'   : '95%', 
    'autoScale'   : false, 
    'transitionIn'  : 'none', 
    'transitionOut'  : 'none', 
    'type'    : 'iframe', 
    'onCleanup'   : cleanUp 
}); 
+2

Quando il credito è dovuto, lo faccio sempre. Se non c'è una risposta alla mia domanda, allora non cliccherò su nessuno casuale semplicemente per soddisfare un tasso percentuale. Forse questa non è una critica alla mia mancanza di conoscenza di essere in grado di fare clic su un 'tick', ma una critica verso la quantità di risposte povere. Io do SEMPRE credito laddove il credito è dovuto. –

risposta

2

Si può vedere nella fancybox api: onClosed... Will be called once FancyBox is closed

$('.overlay').fancybox({ 
    onClosed: function() { 
     var bla = $('#targetFrame')[0].contentWindow.targetFunction(); 
    } 
}); 

Non esiste una finestra secondaria/iframe, la casella è semplicemente un div in posizione assoluta. È nello stesso DOM della pagina.

+0

Capisco cosa hai messo ma questo è semplicemente lasciarmi fare qualcosa o chiamare una funzione onclose/cleanup/open ... in realtà non sta ottenendo un varibal dalla finestra figlia. E usarlo all'interno del genitore. Sto cercando di passare una variabile dal bambino. –

+0

Non sei sicuro di quale sia l'equivalente di jQuery ma puoi usare .contentWindow per accedere all'iframe. Vedi la mia modifica sopra. – Keyo

+1

Ciao grazie dopo che la prima modifica non ha funzionato ho saltato chiamando la funzione del tutto e ho accostato il DOM per i miei var cheers (la mia soluzione è nella mia domanda orig). –

5

nel genitore, mi definisco

var $_returnvalue = false; 

E onClosed si presenta così:

onClosed: function() { 
    if ($_returnvalue != false) 
    { 
     // Do something in the parent 
    } 

e nella pagina fancybox, quando qualcosa è pronto per essere restituito, ho impostato questo valore a genitore. $ _ returnvalue e quindi chiudere la finestra. Funziona bene per selezionare qualcosa da una lista e riportare quel valore alla pagina chiamante.

+0

funziona bene. Nel caso in cui qualcuno usi Fancybox 2, ha cambiato la funzione da 'onClosed' a' afterClose'. – Raptor