2011-01-04 12 views
7

Witam, zastanawiałem się, czy możliwe jest przekazanie zmiennej z dziecka fancybox do rodzica, gdy dziecko jest zamknięte?fancybox - przekazywanie zmiennej do rodzica, gdy okno fancybox jest zamknięte

Wszelkie informacje są mile widziane.

Pozdrawiam,

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

Kiedy należy się kredyt, zawsze to robię. Jeśli nie ma odpowiedzi na moje pytanie, nie kliknę żadnego losowego po prostu, aby zadowolić stopę procentową. Może to nie jest krytyka mojego braku wiedzy na temat możliwości kliknięcia "kleszcza", ale krytycznego podejścia do ilości złych odpowiedzi. ZAWSZE uiszczam kredyt tam, gdzie jest należny kredyt. –

Odpowiedz

2

można zobaczyć w fancybox api: onClosed... Will be called once FancyBox is closed

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

Brak okna potomnego/ramki elementarnej, pole jest po prostu pozycją div absolutnie pozycjonowaną. Jest w tym samym DOM, co strona.

+0

Rozumiem, co umieściłeś, ale to po prostu pozwala mi coś zrobić lub wywołać funkcję onclose/cleanup/open ... to nie jest faktycznie otrzymywanie varibal z okna podrzędnego. I używanie go w rodzicu. Zamierzam przekazać zmienną z powrotem od dziecka. –

+0

Nie wiesz, co to jest odpowiednik jQuery, ale możesz użyć .contentWindow, aby uzyskać dostęp do elementu iframe. Zobacz moją edycję powyżej. – Keyo

+1

Cześć, dziękuję, po tym, jak pierwsza edycja nie zadziałała Pominąłem wywoływanie funkcji w całości i skorzystałem z DOM dla moich wiwatów (moje rozwiązanie jest w moim oryginalnym pytaniu). –

5

W rodzica, zdefiniować

var $_returnvalue = false; 

I onClosed wygląda następująco:

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

A na stronie fancybox, gdy coś jest gotowy zostać zwrócone, ustawić tę wartość do parent. $ _ returnvalue, a następnie zamknij okno. Działa to dobrze, wybierając element z listy i przekazując tę ​​wartość z powrotem do strony wywołującej.

+0

działa dobrze. Jeśli ktoś używa Fancybox 2, zmienił funkcję z "onClosed" na "afterClose". – Raptor

Powiązane problemy