Jquery .animate()之后忽略.delay()

Jquery .animate()之后忽略.delay(),jquery,jquery-animate,delay,Jquery,Jquery Animate,Delay,我有许多div,它们应该依次展开。 必须延迟每个div的展开动画,直到完成之前的div动画。这正如预期的那样有效 在每个步骤的动画之后,我希望能够将下一个div的动画再延迟一点。我的问题是,jQuery完全忽略了动画之后的延迟。 在.animate()之后调用.delay()有什么错误吗 这是我当前的代码: $('div').each(function(index){ $(this).delay(index*$stepspeed).animate({height: $stepheight

我有许多div,它们应该依次展开。
必须延迟每个div的展开动画,直到完成之前的div动画。这正如预期的那样有效

在每个步骤的动画之后,我希望能够将下一个div的动画再延迟一点。我的问题是,jQuery完全忽略了动画之后的延迟。
.animate()
之后调用
.delay()
有什么错误吗

这是我当前的代码:

$('div').each(function(index){
    $(this).delay(index*$stepspeed).animate({height: $stepheight[index]}, $stepspeed).delay((index+1)*$stepdelay+$startdelay);
});  

答复 我通过使用
if
跳过第一个
div
中的延迟来解决这个问题
这是我使用的代码:

$('div').each(function(index){
    if(index == 0) {$(this).delay($fadespeed).animate({height: $stepheight[index]}, $stepspeed);} //No delay for the first div
    else {$(this).delay($fadespeed+index*$stepspeed+(index+1)*$stepdelay+$startdelay).animate({height: $stepheight[index]}, $stepspeed);}
});

也许有一个更简单的解决方案,但这是我的解决方案()

以类似循环的方式构建一个函数,在稍微超时后为每个div调用该函数:

$(function() {
    var el = $('div');
    lp(0);
    function lp(count){
        $(el.get(count)).animate({height: '200px'}, {duration: 500, queue: true, complete: function() {
            setTimeout(function(){
                if(count != el.length-1)
                {
                    count++;
                    lp(count);
                }
            }, 500);
        }});
    }
}); 

末尾的延迟与延迟循环中的下一个元素无关,只需增加
$stepspeed
。那么就没有办法延迟循环中的下一个元素了?如果当前div是循环中的第一个div,则在animationm之前添加延迟需要进行检查。这不会是一个问题,但我认为它会添加不必要的代码…总是有超时?我试图在元素末尾添加一个
setTimeout
,但这只会给我带来错误…我现在使用If/Else。谢谢,我没有测试这个,因为我已经找到了使用If/Else语句的解决方案,但我会调查的。也许你的更容易。