在setTimeout()循环之后,jQuery animate()失败

时间:2015-10-05 21:56:19

标签: javascript jquery loops jquery-animate settimeout

我正在写这段代码(我简单地说了)

function flip(i) {
    setTimeout(function() {
        $("#block-"+i).css("transform","rotateY(10deg)");
    }, i*200);
}

$("#flip").click(function() {
    for (i=1;i<=6;i++) {
        flip(i);
        $("#block-"+i).delay(i*200+1400).animate({left:100},500);
    }

    $("#text-1").delay(3000).animate({top:200},4000,"swing",function(){
        $("#block-1").animate({top:500},1000);
    });
});

我知道在循环中使用setTimeout()存在一些问题,但问题是在线

  

$( “#块-1”)动画({顶部:500},1000);

它没有动画.. 当我尝试从回调中取出它时,就像这样

function flip(i) {
    setTimeout(function() {
        $("#block-"+i).css("transform","rotateY(10deg)");
    }, i*200);
}

$("#flip").click(function() {
    for (i=1;i<=6;i++) {
        flip(i);
        $("#block-"+i).delay(i*200+1400).animate({left:100},500);
    }

    $("#text-1").delay(3000).animate({top:200},4000);
    $("#block-1").delay(7000).animate({top:500},1000);
});

我不再工作,但我必须添加延迟() 实际的代码包含一些排队的动画元素,所以我必须计算每个延迟,这是如此烦人.. 有没有解决这个问题?

1 个答案:

答案 0 :(得分:0)

唉唉。只是忘了它..我重写代码,修复问题,但仍然不知道之前有什么问题.. 实际上新代码有另一个问题..但这是另一个话题..