2012-04-24 18 views
6

Rozważmy div „dMyDiv”jquery animować, ale potem wrócić do normalnego

zauważam w jQuery można animować tak to:

$("#dMyDiv").animate({ 
     backgroundColor: "#aa0000" 
    }, 1000); 

Przynosi czerwony jak kolorowym tle do mojego div. Ale czy istnieje sposób, aby potem powiedzieć po 10 sekundach wrócić do mojego normalnego białego tła mojego div? Widzę, że istnieje funkcja oddzwaniania, ale nie jestem pewien, czy można uruchomić animację, a po zakończeniu animacji wrócić do mojego zwykłego tła (przed animacją). Czy powinienem to zrobić:

$("#dMyDiv").animate({ 
      backgroundColor: "#aa0000" 
      }, 1000, function() { 
      $(#dMyDiv").animate({ backgroundColor: "#fff" }, 1000); 
      }; 
); 

Znaczenie po czerwonym animacji, po prostu animuj ponownie do białego?

Odpowiedz

0

udało mi się zrobić z tej facetów:

http://jsfiddle.net/aN7qz/

Oto kod:

$("#myDiv").animate({ 
      backgroundColor: "#aa0000" 
      }, 
      1000, 
      function() { 
       $("#myDiv").animate({ backgroundColor: "#fff" }, 1000); 
      } 
        ); 
+0

Myślałem, że chcesz poczekać 10 sekund, a następnie ponownie ożyć? Jeśli tak, sprawdź moją odpowiedź, aby dowiedzieć się, jak to zrobić. Jeśli nie, a chcesz natychmiast zadzwonić po pierwszej animacji, masz to! –

+0

@Scott - Cóż, naprawdę chciałem tylko przejść od jednej animacji do drugiej i jeśli o tym pomyślisz, mogę ustawić sekundy animacji, więc to powinno zrobić. Nadal będę dawać ci +1 za twoją ciężką pracę dedykowaną :). – oJM86o

+1

oJM86o: Moja odpowiedź była poprawna i pozostała jako zaakceptowana przez kilka dni. Teraz zareagowałeś mniejszą funkcjonalnością i usunąłeś zaakceptowaną odpowiedź, aby przyjąć własną odpowiedź jako zaakceptowaną. W konsekwencji moja reputacja została obniżona o 15 punktów. ¬ – lu1s

7

Masz rację. trzeci parametr to funkcja wykonywana po zakończeniu animacji.

$("#dMyDiv").stop().animate({backgroundColor:'#aa0000'},1000,function(){ 
    $(this).animate({backgroundColor:'#fff'},1000); 
}); 
+0

co jest punktem zatrzymania na początku nning? – oJM86o

+0

Jeśli nie zatrzymasz animacji i uruchomi się ona w momencie, gdy zostanie ponownie uruchomiona, dostanie się do kolejki, co sprawi, że będzie dziwnie wyglądać. Na przykład uruchamiasz animację, klikając przycisk, robisz to wielokrotnie 10 razy. Jeśli nie przestaniesz, będzie działać wiele razy, aż do zakończenia. – lu1s

+0

Ok, dziękuję, ja też to dodam. – oJM86o

3

Można użyć setTimeout:

$("#dMyDiv").stop(true, true).animate({ 

    backgroundColor: "#aa0000" 

}, 1000, function() { 

    setTimeout(function() {  

     $(#dMyDiv").animate({ 

      backgroundColor: "#fff" 

     }, 1000); 

    }, 10 * 1000); 

}); 
+0

Jaki jest cel zatrzymania na początku? – oJM86o

+1

Jeśli nie zatrzymasz animacji i uruchomi się ona w momencie, gdy zostanie ponownie uruchomiona, dostanie się do kolejki, co będzie wyglądało dziwnie. Na przykład uruchamiasz animację, klikając przycisk, robisz to wielokrotnie 10 razy. Jeśli nie przestaniesz, będzie działać wiele razy, aż do zakończenia. – lu1s

+0

Lu1s jest poprawny i chcesz użyć ['.stop (true, true)'] (http://api.jquery.com/stop/) dla płynniejszego przejścia. Sprawdź dokumentację łącza, dlaczego. –

Powiązane problemy