2012-04-11 12 views
0

Ich versuche, meine Animation von meinem Inhalt DIV zuerst auszublenden dann an dieser Fade-out Bühne zu stoppen und nur die Einblendung in Warteschlange, so dass .dequeue() kann später aufgerufen werden, nachdem ich den Inhalt dynamisch geladen habe (wahrscheinlich durch Ajax).jQuery/Effekte/.delay() & .stop() -Funktionalität

$content.fadeTo(1000,0.0).delay(1000).stop().fadeTo(1000, 1) 

Ich habe zwei Fragen -

  1. meine verblassen geschieht sofort und nicht verblassen für 1 Sekunde.
  2. Die stop() Funktion stoppt nichts, die Animation läuft einfach durch.

Was fehlt mir?

Antwort

0

Es gibt ein paar Probleme:

$content.fadeTo(1000,0.0) Ihre div in 1 Sekunde fade out (man könnte .fadeOut(1000) verwenden, wenn Sie möchten).

Dann, was .delay() tut, ist daley die Ausführung von subsecuent Animationen von den Millisekunden Sie zur Verfügung gestellt, wenn Sie also

tun $content.fadeOut(1000).delay(300).fadeIn(); Es wird die div in einer Animation ausgeblendet, die mit 1 Sekunde dauert, 300 Millisekunden warten und dann Fade das Div zurück in.

So weit so gut, aber was .stop() tut, ist die Animation in den zugeordneten Elementen zu stoppen, so dass Ihre fadeTo nicht ausgeführt wird, es nicht Dinge Warteschlange. Wenn Sie dann .fadeTo(1000, 1) (entspricht .fadeIn(1000)) tun, ist das div bereits sichtbar, also tut es nichts.

ich Ihnen empfehlen tun:

$content.fadeOut(1000); 

//Later in the code 
$.ajax({ 
//... 
success: function() { 
    //code.. 
    $content.fadeIn(1000); 
}); 

Aber wenn Sie die Animation in die Warteschlange wollen könnten Sie .queue() und dequeue()

verwenden