一次迭代一个子元素

Ody*_*3us 3 html jquery jquery-animate

正如标题所述,我正在尝试迭代一系列子元素,当我尝试逐个淡出它们时会遇到麻烦,我正在$.each()尝试实现这一点,但它似乎正在逐渐消失我想要做的就是等待动画完成,然后转到下一个子元素并将其淡出,这是我的代码,

jQuery的:

var children = $("container").children();

children.each(function(){
    $(this).fadeOut('slow');
})
Run Code Online (Sandbox Code Playgroud)

HTML:

<div id="container">
    <div style="background: #F00;"></div>
    <div style="background: #00F;"></div>
    <div style="background: #0F0;"></div>
</div>
Run Code Online (Sandbox Code Playgroud)

是否可以在当前动画完成之前触发动画,但是可以按设定的间隔延迟动画?

提前致谢!

Val*_*sel 14

这是一个略有不同的方法:

创建一个包含所有子元素的数组,而不是使用jQuery对象的初始代码.

var children = [];
$("#container").children().each(function() {
    children.push(this);
});
Run Code Online (Sandbox Code Playgroud)

创建一个函数,一次从数组中弹出一个元素并为其设置动画,递归调用自身作为回调函数,这样它只会在上一个动画结束后执行.

function fadeThemOut(children) {
    if (children.length > 0) {
        var currentChild = children.shift();
        $(currentChild).fadeOut("slow", function() {
            fadeThemOut(children);
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

查看有关jsFiddle的工作演示.

希望这可以帮助 !