Javascript 带setInterval的jquery each()

Javascript 带setInterval的jquery each(),javascript,jquery,Javascript,Jquery,我有一个填充了各种元素的对象,我希望使用each()迭代这些元素,然后对轮到它的元素执行一个操作。因此: var arts = $("#press-sqs > article"); shuffle(arts); $(arts).each(function(){ setInterval(function() { // in here perform an action on the current element in 'arts' }, 2000); });

我有一个填充了各种元素的对象,我希望使用
each()
迭代这些元素,然后对轮到它的元素执行一个操作。因此:

var arts = $("#press-sqs > article");
shuffle(arts);

$(arts).each(function(){
    setInterval(function() {
    // in here perform an action on the current element in 'arts'
    }, 2000);   
}); 
shuffle()
是一个基本的shuffle函数)

我不知道如何作为选择器访问当前元素并对其执行操作<代码>$(此)是
$(窗口)

最后,我需要函数在到达
art
末尾后再次开始迭代,并继续无限循环。

使用该函数

$(arts).each(function(){
    var that = this;
    setInterval(function() {
    // in here perform an action on the current element in 'arts'
         doSomethingWith(that)
    }, 2000);   
});
jQuery的
。每个(…)
方法都将“current”元素(及其索引)传递到回调中
当您不需要做任何太复杂的事情时,此
只是一种方便

$(arts).each(function(i, current){
    setInterval(function() {
    // in here perform an action on the current element in 'arts'
    }, 2000);   
});

例如,当前元素在setInterval回调中可用作
current
。请注意,此元素是以其“原始”形式传递的,正如
this
一样,因此如果要对其调用jQuery方法,则需要以相同的方式对其进行包装,即:
$(当前)

如果使用
setInterval
,则交换顺序会得到相同的结果:

setInterval(function() {
    $(arts).each(function(){
         doSomethingWith(this);
    });   
}, 2000);
我不认为你想要你认为你在这里做的事。我想你想要:

var i = 0;
setInterval(function() {
    var art = arts[i++];
    doSomethingWith(art)
    if(i >= arts.length) i = 0;
}, 2000); 

似乎不起作用<代码>$(that).children(“.sq logo”).hide()隐藏该类的所有子级,而不仅仅是当前正在处理的元素的子级iterated@artparks:这是因为您立即迭代元素!很可能您真正想要的是在each周围设置一个setInterval,在each内部设置一个setTimeout,并根据索引设置延迟。聪明的家伙,您明白我的意思了。我不认为我说得特别清楚,但这是确切的结果。ThanksI不同意在交换顺序时结果是“相同的”(元素将以不同的顺序处理),但我敢打赌你关于“真实”意图的看法是正确的。(编辑:事实证明,你是!)你能解释一下第二个样本中发生了什么吗?@artparks:你在哪一点上有问题
i
只是数组中的一个索引,它每2秒递增一次。@WillPalmer:原始大小写有定义的顺序吗?我想你可能会说,区别在于是否定义了顺序。