2011-03-14 38 views
5

我是jQuery的新手,我正在嘗試一個簡單的程序。在這個程序中,我試圖實現的是,當我點擊div文本時,第一行將淡出,然後它會改變背景顏色,然後它會淡入淡出,這樣會緩慢地改變顏色,但是這裏發生了什麼是當我點擊文本的行突然改變顏色,然後淡出,然後淡入。所以我想知道是否有辦法讓執行淡出後執行顏色更改代碼執行。在jquery中完成上一行後執行一行

我的程序:

 $(document).ready(function(){ 
      $("#firstDiv").click(function(){ 
       //     $(this).fadeOut(1000); 

       $(this).fadeOut(1000); 

       $(this).css("background-color", "aqua"); 

       $(this).fadeIn(1000); 


      }); 
     }); 
    </script> 
</head> 
<body> 
    <div id="firstDiv" style="background-color: yellowgreen"> 
     Click Me 
    </div> 
</body> 

回答

3

您可以使用淡出()這樣的回調函數:

$(this).fadeOut(1000, function(){ 
    $(this).css("background-color", "aqua").fadeIn(1000); 
}); 
4

你必須把顏色傳遞給fadeOut回調改變:

$(this).fadeOut(1000, function() { 
    $(this).css("background-color", "aqua"); 
}).fadeIn(1000); 

Everyt興你在回調後執行fadeOut完成後執行。 fadeIn不會立即執行,因爲效果方法自動爲queued

:如果你是做昂貴的東西計算(即它需要時間)在回調並要撥打fadeIn只有在此之後完成,你必須把fadeIn回調太:

$(this).fadeOut(1000, function() { 
    $(this) 
     .css("background-color", "aqua") 
     .fadeIn(1000); 
}); 

否則fadeIn將在回調完成前被調用。


另外值得一讀在這方面:Can somebody explain jQuery queue?

+0

爲什麼衰落鏈自動但是CSS變化沒有? – poke 2011-03-14 09:37:47

+0

@poke:剛剛添加到我的答案;) – 2011-03-14 09:39:46

相關問題