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

jQuery animate() fail after setTimeout() loop

我正在编写这段代码(我简单地对其进行了简化)

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() 存在一些问题,但问题在线

$("#block-1").animate({top: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);
});

我又不能工作了,但我必须添加延迟() 实际代码包含一些排队的动画元素,所以我必须计算每个延迟,这很烦人.. 有什么解决办法吗?

啊啊啊。算了吧..我重写了代码,解决了问题,但仍然不知道之前出了什么问题.. 实际上新代码还有另一个问题..但那是另一个话题..