Jquery检测到效果的结束

时间:2013-10-20 14:30:57

标签: javascript jquery settimeout

我为旋转div创建了简单的函数,为此我使用setTimeOut并且这个函数告诉脚本重复的时间相同并转到下一个,我的情况下的问题是我在每个转换中使用效果并需要回调功能发生到效果结束

我的功能:

<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和内容,当结束时重复第一次和所有时间返回,但在每种情况下,每个div的效果= 4或5秒并且在中间对于div的动画,setTimeout调用其他时间的函数并在每种情况下打破效果,通过这个我的问题,在jquery中存在一些setTimeout的方法只在效果完成后才运行,之后调用其他时间到函数? / p>

谢谢

2 个答案:

答案 0 :(得分:0)

您可以使用.promise()

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

答案 1 :(得分: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>