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);  
War es hilfreich?

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:)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top