2011-11-17 36 views
0

所有, 旋轉的div我有這樣的代碼:使用jQuery用的setTimeout

var speed= 1000, 
num = 1, 
timer; 

(function rotate() { 
    var container_footer = jQuery("#rotate_container"); 
    var divs_footer = container_footer.children(); 
    var divs_footer_length = divs_footer.length; 
    $("#item"+num).stop(true, true).fadeIn(speed).delay(speed).fadeOut(speed);; 
    num>divs_footer_length ? num=0 : num++; 
    timer = setTimeout(rotate, speed*3); 
})(); 

這工作好和旋轉圖像。但是,它會在顯示後立即淡出div,並且會淡化另一個div。我希望發生的情況是根據速度變量有一個div淡入,然後顯示15秒,然後以速度淡出變量,然後在速度變量中淡出另一個div,並顯示15秒等任何想法如何做到這一點將不勝感激?謝謝!

回答

0

而不是淡入,等待和淡出,你可以使旋轉功能簡單地淡出圖像,然後淡入下一個。因此,從已經顯示的第一個圖像開始,然後在rotate()上調用setTimeout。例如:

var speed= 1000, 
num = 1, 
timer = setTimeout(rotate, 15000); //15 seconds as requested 

function rotate() { 
    var container_footer = jQuery("#rotate_container"); 
    var divs_footer = container_footer.children(); 
    var divs_footer_length = divs_footer.length; 
    $("#item"+num).fadeOut(speed); 
    num>divs_footer_length ? num=0 : num++; 
    $("#item"+num).fadeIn(speed); 
    timer = setTimeout(rotate, 15000); 
}; 
+0

我希望它等待指定的時間段。所以我想在它試圖在另一個旋轉之前顯示15秒。 – user1048676

+0

是的,所以改爲setTimeout(rotate,15000);那會爲你做。在再次旋轉之前,它會等待15秒鐘。 – Clint

0

您可以使用fadeOut上發生的回調,並使用一個小的遞歸循環您的div。如果你有一個div的限制,這將工作得很好。以下適用於我,甚至延誤。

 var rotate, speed= 1000; 

     rotate = function (itemNum) { 
      $("#item" + itemNum).stop(true, true).fadeIn(speed).delay(speed).fadeOut(speed, function() { 
       //callback when fadeOut completes 
       rotate(itemNum + 1); 
      }); 
     } 
     rotate(1);