2010-11-18 8 views
0

Ich versuche, einen jQuery-Effekt/Animation nach dem anderen laufen zu lassen. Ich habe dies versucht:Verständnis von jQuery-Effekten in Warteschlangen

$('#myDiv').animate({'left':'+=300'},1000).delay(2000).animate({'left':'-=300'},1000); 

EDIT:

Das tatsächlich tut Werk nur ein Einfügen Fehler meinerseits. Chaining Effekte erstellt automatisch eine Warteschlange nach dem docs, das ist, was wir wollen:

$('#foo').slideUp().fadeIn();

Wenn diese Anweisung ausgeführt wird, das Element beginnt seine gleitende Animation sofort, aber der Fading Übergang wird nur dann in die FX-Queue gesetzt, die heißt, wenn der gleitende Übergang abgeschlossen ist.

+0

Was macht es? –

+0

Nichts passiert – Yarin

+1

Ihr Verständnis der Dokumente ist korrekt. Was Sie haben, sollte funktionieren. Hier ist ein Beispiel. http://jsbin.com/eladu3/ Gibt es eine Chance, dass Sie den Code irgendwo kopieren/einfügen? Manchmal finden ungültige unsichtbare Zeichen ihren Weg in und brechen den Code. – user113716

Antwort

0

jQuery animate() hat einen Anruf (Danke für die Hilfe, wird mir die Frage nicht zulassen, löschen) zurück Parameter

damit Sie diesen Es

$('#myDiv').animate({'left':'+=300'},1000, function() { 
    //Start Next Animation 
    $(this).animate({'left':'-=300'},1000, function() { 
    //Start Next animation 
    }); 
}) 
+1

Ich weiß über Rückrufe, aber ich möchte eher Kette als Nest, und dies bietet auch keine einfache Möglichkeit für Verzögerungen. – Yarin

0

tun können Es gibt zwei Möglichkeiten, dies zu tun: Verwenden Sie den Parameter callback, um zu animieren, und verwenden Sie queues.

+0

Warteschlangen sind was ich interessiere - sehe meine obigen Bearbeitungen ... – Yarin

0

Haben Sie position: absolute; (oder relative, je nachdem, was Sie wollen) auf dem div? Wenn Sie dann nicht animiert left wird nichts tun. Hier ist ein funktionierendes Beispiel: http://jsfiddle.net/vftNF/

+0

Ich dachte zuerst etwas Ähnliches, aber die Frage sagt * "die getrennten Animationsanrufe arbeiten von selbst" *. – user113716

+0

Nun, hast du das Beispiel überprüft? Das funktioniert für mich, also können Sie das verwenden, um mit dem Code zu vergleichen, den Sie haben. –

+0

Nevermind, ich habe deinen Kommentar gesehen. Beachten Sie jedoch, dass Sie etwas Bandbreite/Typisierung sparen können, indem Sie die Parameter nicht in Anführungszeichen setzen: '{left: '+ = 300'}' –