2011-01-04 16 views
7

Hola, me preguntaba si es posible pasar una variable de fancybox child a parent una vez que el hijo está cerrado.fancybox - pasando la variable a parent cuando la ventana de fancybox está cerrada

Cualquier información es muy apreciada.

Saludos,

Phil

EDITAR **

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

Cuando el crédito es debido siempre lo hago. Si no hay respuesta a mi pregunta, no haré clic en ninguna al azar simplemente para agradar a un porcentaje. Tal vez esto no es una crítica a mi falta de conocimiento de poder hacer clic en un 'tic', sino una crítica hacia la cantidad de respuestas pobres. SIEMPRE doy crédito donde se debe crédito. –

Respuesta

2

Se puede ver en la fancybox api: onClosed... Will be called once FancyBox is closed

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

No hay ventana/iframe hijo, la caja es simplemente una div completamente posicionada. Está en el mismo DOM que la página.

+0

Entiendo lo que has puesto, pero eso es simplemente dejarme hacer algo o llamar a una función en close/cleanup/open ... en realidad no está obteniendo un varibal desde la ventana secundaria. Y usándolo dentro del padre. Estoy buscando pasarle una variable al niño. –

+0

No estoy seguro de cuál es el equivalente de jQuery, pero puede usar .contentWindow para acceder al iframe. Ver mi edición arriba. – Keyo

+1

Hola gracias después de que la primera edición no funcionó, me salté al llamar a la función por completo y accedí al DOM por mis var cheers (mi solución está en mi pregunta original). –

5

En el padre, defino

var $_returnvalue = false; 

Y onClosed se ve así:

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

Y en la página FancyBox, cuando algo está listo para ser devuelto, me puse ese valor a parent. $ _ returnvalue y cierre la caja. Esto funciona bien para seleccionar algo de una lista y pasar ese valor a la página de llamada.

+0

funciona bien. En caso de que alguien esté usando Fancybox 2, cambió la función de 'onClosed' a' afterClose'. – Raptor