2011-01-04 3 views
7

Hi, ich frage mich, ob es möglich ist, eine Variable von fancybox child an eltern zurückzugeben, sobald das Kind geschlossen ist?fancybox - Übergabe der Variablen an Eltern, wenn das Fenster fancybox geschlossen ist

Alle Informationen werden sehr geschätzt.

Grüße,

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

Wenn Kredit fällig ist, mache ich immer. Wenn es keine Antwort auf meine Frage gibt, klicke ich nicht auf irgendeinen Zufall, nur um einen Prozentsatz zu gefallen. Vielleicht ist das keine Kritik an meinem Mangel an Wissen darüber, dass man in der Lage ist, auf ein "Tick" zu klicken, sondern eine Kritik an der Menge an schlechten Antworten. Ich gebe IMMER Kredit, wo Kredit fällig ist. –

Antwort

2

Sie im fancybox api sehen: onClosed... Will be called once FancyBox is closed

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

Es gibt kein untergeordnetes Fenster/iframe, die Box ist einfach ein absolut positioniertes div. Es befindet sich im selben DOM wie die Seite.

+0

Ich verstehe, was Sie gesagt haben, aber das ist einfach lassen Sie mich etwas tun oder aufrufen eine Funktion onclose/cleanup/open ... es ist nicht wirklich bekommen eine Varibal aus dem Kind Fenster. Und es innerhalb des Elternteils verwenden. Ich möchte eine Variable vom Kind zurückgeben. –

+0

Nicht sicher, was das jQuery-Äquivalent ist, aber Sie können .contentWindow verwenden, um auf den iframe zuzugreifen. Siehe meine Bearbeitung oben. – Keyo

+1

Hallo danke, nachdem die erste Bearbeitung nicht funktioniert habe, übersprang ich den Aufruf der Funktion insgesamt und behielt das DOM für meine var cheers (meine Lösung ist in meiner orig Frage). –

5

Im Eltern definiere ich

var $_returnvalue = false; 

Und OnClosed sieht wie folgt aus:

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

Und in der fancybox Seite, wenn etwas bereit zurückgegeben werden soll, habe ich diesen Wert Eltern. $ _ returnvalue und dann schließen Sie die Box. Dies funktioniert gut, um etwas aus einer Liste auszuwählen und diesen Wert an die aufrufende Seite zurückzugeben.

+0

funktioniert gut. Falls jemand Fancybox 2 verwendet, hat er die Funktion von 'onClosed' in' afterClose' geändert. – Raptor