Verzögerung () und fadeOut () nicht verzögern attr () in der Warteschlange
Frage
Was ist falsch in diesem Code? Ich versuche, diesen Effekt zu erhalten: fadeOut(500)
und attr('class','myClass')
von 600 Millisekunden verzögert .. dann wieder delay(600)
und fadeIn(500)
. Die Verzögerungen passieren korrekt, aber die attr()
verzögert nicht ist, feuert es, wenn #myDiv
noch schwindet! : '(
$('#myDiv').fadeOut(500)
.delay(600)
.attr('class','myClass')
.delay(600)
.fadeIn(500);
Lösung
Die .delay()
wirkt sich nur auf die Animation oder fx
Warteschlange (es sei denn, Sie eine andere Warteschlange angeben speziell). Beachten Sie, dass die Verkettung und Warteschlangen sind zwei deutlich unterschiedliche Konzepte, Verkettungs weiterhin die Verwendung des gleichen jquery Satzes, aber das ist eine andere Sache ganz als alle Ereigniswarteschlangen auf Elemente in diesem Satz.
Damit der .attr()
Anruf betroffen, können Sie es als Rückruf zu gleichen Warteschlange hinzuzufügen haben mit .queue()
, wie folgt aus:
$('#myDiv').fadeOut(500)
.delay(600)
.queue(function(next) { $(this).attr('class','myClass'); next(); })
.delay(600)
.fadeIn(500);
Beachten Sie auch, gibt es .addClass()
, .removeClass()
und .toggleClass()
Methoden können zur Verfügung, machen dies zu einem etwas sauberer:)