Javascript 将类按顺序从最后一个元素开始添加到元素集合中

Javascript 将类按顺序从最后一个元素开始添加到元素集合中,javascript,addclass,sequential,Javascript,Addclass,Sequential,我想按顺序向元素集合添加一个类。我找到了答案 以下是该条中的代码供参考: var i = 0; var callback; callback = function () { if (i < article.length) { $(article[i]).addClass('something'); ++i; setTimeout(callback, 10000); } }; setTimeout(callback, 10000

我想按顺序向元素集合添加一个类。我找到了答案

以下是该条中的代码供参考:

var i = 0;
var callback;

callback = function () {
    if (i < article.length) {
       $(article[i]).addClass('something');

       ++i;
       setTimeout(callback, 10000);
    }
};

setTimeout(callback, 10000);
var i=0;
var回调;
回调=函数(){
如果(i<文章长度){
$(第[i]条)addClass(“某物”);
++一,;
setTimeout(回调,10000);
}
};
setTimeout(回调,10000);
我现在想删除从最后一个元素开始的类,因此实际上与动画的顺序相反


有人能帮忙吗?非常感谢。

只需开始
i
作为
文章。长度
循环到另一个方向

var i = article.length;
var callback;

callback = function () {
    if (i--) {
       $(article[i]).removeClass('something');
       setTimeout(callback, 10000);
    }
};

setTimeout(callback, 10000);

只需从
i
as
article开始。length
在另一个方向循环

var i = article.length;
var callback;

callback = function () {
    if (i--) {
       $(article[i]).removeClass('something');
       setTimeout(callback, 10000);
    }
};

setTimeout(callback, 10000);
要执行反向操作:

var i = article.length - 1;
var callback;

callback = function () {
    if (i >= 0) {
       $(article[i]).removeClass('something');

       --i;
       setTimeout(callback, 10000);
    }
};

setTimeout(callback, 10000);
要执行反向操作:

var i = article.length - 1;
var callback;

callback = function () {
    if (i >= 0) {
       $(article[i]).removeClass('something');

       --i;
       setTimeout(callback, 10000);
    }
};

setTimeout(callback, 10000);

虽然
setTimeout
方法可以工作,但jQuery提供了一种更优雅地实现这一点的方法:

$(".article").each(function() {
    var d = $(this);
    $("body").queue(function(next) {  
        d.addClass("foo");
        next();
    }).delay(200)
})
要以相反的顺序进行迭代,首先添加这个小“插件”:

然后:

$(".article").reverse().each(function() {
    var d = $(this);
    $("body").queue(function(next) {  
        d.addClass("foo");
        next();
    }).delay(200)
})

虽然
setTimeout
方法可以工作,但jQuery提供了一种更优雅地实现这一点的方法:

$(".article").each(function() {
    var d = $(this);
    $("body").queue(function(next) {  
        d.addClass("foo");
        next();
    }).delay(200)
})
要以相反的顺序进行迭代,首先添加这个小“插件”:

然后:

$(".article").reverse().each(function() {
    var d = $(this);
    $("body").queue(function(next) {  
        d.addClass("foo");
        next();
    }).delay(200)
})

因此,从长度减1开始,然后减去并使用removeClass。从长度减1开始,然后减去并使用removeClass。这不会删除
文章[0]
的类。它还会尝试
$(未定义)。removeClass('something')
因为
文章[article.length]
将是未定义的。这应该是正确的,但我会投票支持你的答案。它的实现比我的更好。这不会删除
文章[0]
的类,它还会尝试
$(未定义)
因为
文章[article.length]
将是未定义的。这应该是正确的,但我会投票支持你的答案。它比我的好。谢谢保罗!谢谢你的帮助,保罗!谢谢你的帮助。嗨,thg435。谢谢你的回复,它确实更优雅了,但我这次没有使用jQuery。@mtwallet:那么,你文章中的
$
addClass
是从另一个库来的?是的,这是我的错,因为我没有在文章中提到它。我正在使用ChocolateChipUI,它有自己的类似jQuery的语法。不过,我确实经常使用jQuery,所以您的答案仍然相关,我也学到了一些东西。再次感谢。你好,thg435。谢谢你的回复,它确实更优雅了,但我这次没有使用jQuery。@mtwallet:那么,你文章中的
$
addClass
是从另一个库来的?是的,这是我的错,因为我没有在文章中提到它。我正在使用ChocolateChipUI,它有自己的类似jQuery的语法。不过,我确实经常使用jQuery,所以您的答案仍然相关,我也学到了一些东西。再次感谢。