1

我在这里得到了这个代码: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。所以这不起作用。

谁能把我推向正确的方向?

4

1 回答 1

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),然后在反向集合上调用相反的动画。

于 2012-07-06T14:29:46.073 回答