我在这里得到了这段代码: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.所以这不起作用。
有人能请我把我推向正确的方向吗?
答案 0 :(得分:1)
我不擅长解释别人的代码,所以我给你写了一个替代方案。
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),然后在反向集合上调用相反的动画。