jQuery while循环不等动画

Val*_*sel 2 jquery animation while-loop

我有一个jQuery函数,它.clone()在一个对象上执行,然后在克隆对象上执行.insertAfter()a和a .slideDown().整个函数包含在while循环中.我将尽可能简洁明了地展示一个通用示例:

while (statement) {
    // code for clone and insert  ...
    $("#newly_created_object").slideDown(500);
}
Run Code Online (Sandbox Code Playgroud)

如何在.slideDown()动画(或任何其他类型的动画)结束之前阻止下一个while循环触发?

先感谢您 !

tva*_*son 6

您可能希望首先创建并插入所有元素,并将它们存储在数组中.然后,您可以使用递归函数从数组中弹出一个元素并为其设置动画,在动画的回调处理程序中的其余元素上调用函数 - 以确保第一个元素在下一次启动之前完成.

    ...
    var elems = [];
    while (statement) {
        var elem = ...clone and insert element, returning element...
        elems.push(elem);
    }

    animateElems( elems);
}


function animateElems( elems )
{
    if (elems.length > 0) {
        var elem = elems.shift();
        $(elem).slideDown( 500, function() {
             animateElems( elems );
        }
    }
}
Run Code Online (Sandbox Code Playgroud)