用fadeOut向后迭代 - 无法弄清楚条件

时间:2012-07-06 14:04:14

标签: jquery fadein fadeout loops

我在这里得到了这段代码:http://jsfiddle.net/Az5Uk/

function fadeIt (element) {

    var elem = $(element).hide();
    var elemLen = $(element).length;

    elem.each(function (i){
        $(this).delay(i * 900).fadeIn(900);

        if (i == elemLen -1) {

            $($(this).get().reverse()).each(function(i) {
                 $(this).delay(elemLen * 900).fadeOut(900);
            });
        }
    });

}

fadeIt(".animate");​

我想做的事情:逐渐淡出三个X,然后向后淡出它们。这应该都是递归函数的一部分。

我没有在示例中编写递归部分,因为我无法弄清楚为什么淡出在一个X之后停止。或者换句话说:我知道这是因为if (i == elemLen -1)但是我不知道不知道如何编辑条件使其淡出所有三个X.

我已经尝试了if (i == elemLen -1 || i == elemLen -2),但是使用该语法,它首先淡出中间的X,然后淡出最后的X.所以这不起作用。

有人能请我把我推向正确的方向吗?

1 个答案:

答案 0 :(得分:1)

http://jsfiddle.net/npwvH/

我不擅长解释别人的代码,所以我给你写了一个替代方案。

function ponyo(elements, anim) {
    elements.each(function(i) {
        $(this).delay(i*900)[anim](900);
    });
    setTimeout(function() {
        ponyo($(elements.get().reverse()), (anim=='fadeIn')?'fadeOut':'fadeIn');
    }, elements.length * 900);
}
ponyo($(".animate").hide(), 'fadeIn');​

它只是像你一样完成动画,等待动画完成所需的时间(setTimeout),然后在反向集合上调用相反的动画。