0

可能重复:
JQuery .each() 向后

我正在使用此代码显示每个 div -> 延迟动画:

$.fn.slideDelay = function(){
    var delay = 0;
    return this.each(function(){
        $(this).delay(delay).animate({
            opacity: 1,
            top: 0
        }, 2000);
        delay += 1000;
    });
};

到目前为止效果很好......我遇到的唯一问题是我需要从最后一个索引而不是第一个索引开始。这意味着最后一个 div 首先被动画化,然后是 beforelast,依此类推,直到第一个。

4

4 回答 4

1

理论上,以下应该有效:

$.fn.slideDelay = function() {
    var len = this.length,
        delay = (len - 1) * 1000;

    return this.each(function() {
        $(this).delay(delay).animate({
            opacity: 1,
            top: 0
        }, 2000);
        delay -= 1000;
    });
};

演示:http: //jsfiddle.net/q4cGP/

于 2012-10-12T09:58:12.897 回答
1

你可以反转收藏...

collection = Array.prototype.reverse.call(collection);

js小提琴

于 2012-10-12T09:58:18.680 回答
1

只需从 jQuery 对象中检索数组并将其反转:

var items = jQuery(this).get();
items.reverse();
jQuery.each(items, function() {.....
于 2012-10-12T09:59:46.353 回答
0

使用如下函数映射延迟:

$.fn.slideDelay = function(){
    var max = this.length - 1;
    return this.each(function(i){
        $(this).delay((max - i) * 1000).animate({
            opacity: 1,
            top: 0
        }, 2000);
    });
};
于 2012-10-12T10:00:35.763 回答