我有一个填充了各种元素的对象,我希望使用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()
是基本的随机播放功能)
我无法弄清楚如何将当前元素作为选择器进行访问并对其执行操作。 $(this)
为$(window)
。
最后,我需要该函数一旦到达art
的末尾就再次开始迭代,并继续无限循环。
答案 0 :(得分:10)
如果您使用的是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);
答案 1 :(得分:3)
jQuery的.each(...)
方法将“current”元素(及其索引)传递给回调。 this
只是在您不需要做太复杂的事情时提供便利。
$(arts).each(function(i, current){
setInterval(function() {
// in here perform an action on the current element in 'arts'
}, 2000);
});
在上面,当前元素在setInterval回调中可用作current
。请注意,此元素以“原始”形式传递,如this
所示,因此如果要在其上调用jQuery方法,则需要以相同的方式包装它,即:{{1} }。
答案 2 :(得分:2)
使用它。
$(arts).each(function(){
var that = this;
setInterval(function() {
// in here perform an action on the current element in 'arts'
doSomethingWith(that)
}, 2000);
});