2012-04-04 12 views
6

Wie kann ich eine Funktion ausführen, nachdem ein bestimmtes Element die Animation beendet hat? Es ist eine Slide-Down-ähnliche Animation, das Element ist verborgen und wenn etwas angeklickt wird, wird es sichtbar, indem es seinen Inhalt nach unten verschiebt (+ Höhe).Ereignis nachdem ein div die Animation beendet hat?

Ich habe keine Kontrolle über die Animationsfunktion auf dieses Element, so kann ich nicht die Callback-Option aus dem .animate Funktion $ verwenden ...

Im Moment habe ich so etwas wie

$('.trigger').click(function(){ // <-- "trigger" will make the element animate 
    setTimeout(myfunction, 500); 
}); 

, die funktioniert, aber ich mag es nicht, fühlt sich hacky

+0

den anderen Code anzeigen ... – mplungjan

Antwort

3

wenn Sie jQuery verwenden 1.5+ Sie die jQuery promise() Methode verwenden: http://jsfiddle.net/rGBk7/

z.B.

/* do animation */ 
$("div").animate({ 'marginLeft' : '300px' }, 1000); 

/* attach a promise to animated element/s */  
$("div").promise().done(function() { 
    alert("animation end"); 
}); 

Siehe http://api.jquery.com/promise/

+0

diese läuft, sobald Die Seite wird geladen. Das Problem ist, dass meine Animation auf Benutzereingriff läuft (klicken Sie auf ein anderes Element) – Alex

+0

so? http://jsfiddle.net/fcalderan/rGBk7/5/ – fcalderan

+0

etwas wie das, aber wie ich schon sagte, ich habe keine Kontrolle über die Animationsfunktion :(So sollte es sein: http://jsfiddle.net/rGBk7/20/ – Alex

1

Meinten Sie:


$("div").queue(function(){ 
    your_function(); 
}); 

Es wird nach der Animation Warteschlange ausgeführt werden vollständig

Verwandte Themen