2011-12-19 59 views
1

這裏是jQuery的我已經寫在列表中動畫的一些項目:大量的嵌套函數,我可以讓這個簡單

$("#titleTile").delay(5000).animate({top: "160px"}, 300, function() { 
    $(".tweet_msg.t0").animate({top: 0, height: "show"}, 300, function() { 
    $(".tweet_msg.t1").delay(5000).animate({top: 0, height: "show"}, 300, function() { 
     $(".tweet_msg.t2").delay(5000).animate({top: 0, height: "show"}, 300, function() { 
     $(".tweet_msg.t3").delay(5000).animate({top: 0, height: "show"}, 300, function() { 
      $(".tweet_msg.t4").delay(5000).animate({top: 0, height: "show"}, 300); 
     }); 
     }); 
    }); 
    }); 
}); 

有沒有更好的方式來寫我的代碼?

其次,我可以把它包裝成一個我可以調用的函數嗎?

+0

的可能重複(http://stackoverflow.com/questions/6829413/a-non-nested-animation-sequence-in-jquery) – 2011-12-19 14:22:18

+0

能你可以添加html,使它更易於使用ST?更好的是,你應該創建一個你正在嘗試做的工作jsfiddle.net版本。我可以更好地幫助你。 – einar 2011-12-19 14:59:55

回答

3

另一種選擇是在單個元素上使用自定義隊列。如果這是你所做的一切,可能會過度殺傷。但是,如果你想,這裏是我的前一個問題創造了一個小例子:

http://jsfiddle.net/jRawX/2/

http://api.jquery.com/queue/

至於在函數進行包裝,當然,只是把它包在一個函數:[?jQuery的非嵌套的動畫序列]

function something(){ 
    // do your stuff 
} 
+0

我喜歡這個,閱讀起來更簡單。 – CLiown 2011-12-19 14:24:25

+0

如何在que中的每個動畫之間添加延遲? – CLiown 2011-12-19 14:52:12

+0

只需使用'delay'傳遞隊列名稱即可。 http://jsfiddle.net/jRawX/20/ – 2011-12-19 16:02:04