2013-10-20 85 views
0

我爲旋轉div創建了簡單的函數,爲此我使用setTimeOut並且此函數告訴腳本repit的時間相同並轉到下一個,在我的情況下,問題是我使用效果每個過渡和需要回調函數happend到效果的結束jquery檢測效果的結束

我的功能:

<script> 
function repiter(id) 
{ 

$(".sd_"+id).show(2000).hide(1000); 

var npics=4; 
var ret=(id+1); 


if (ret>=npics) 
{ 
var ret=0; 
} 

setTimeout(function(){repiter(ret);},2000) 

} 
</script> 


<div class="sd_0" style="display:none;">Tester 1</div> 
<div class="sd_1" style="display:none;">Tester 2</div> 
<div class="sd_2" style="display:none;">Tester 3</div> 
<div class="sd_3" style="display:none;">Tester 4</div> 

<script> 
repiter(0); 
</script> 

正如你可以在這裏看到,該函數轉動4個格和內容,當轉到結束第一次和所有時間返回,但在每種情況下,每個div的效果= 4或5秒並且在setTimeTime動畫中的其他時間函數和斷點效果中,由此我的問題,在setTimeout的jquery中存在一些方法,只有在效果完成後才運行,並在此後調用其他時間功能?

Thank's

回答

0

您可以使用.promise()

$(".sd_"+id).show(2000).hide(1000).promise().done(function() { 
    // now the animations are done 
}); 
+0

你能把我的名字作爲我看到所有正確的函數裏面,thank's共享和幫助我,問候 – user2202136

0

嘗試

<script> 
    function repiter(id) { 

    $(".sd_"+id).show(2000, function(){ 
    $(".sd_"+id).hide(1000, function(){ 

    var npics=4; var ret=(id+1); 

    if(ret>=npics) { var ret=0; } 

setTimeout(function(){repiter(ret);},2000) 
}) 
}) 


} </script>