我有一系列带有“bloglink”类的链接。
他们有一个与之关联的点击事件——但此时这无关紧要。我正在尝试循环浏览它们并每 X 秒触发一次点击事件。这就是我所在的位置:
$('a.bloglink').each(function(){
var $bl = $(this);
setInterval(function(){
$bl.trigger('click')
},2000);
})
但它只是一次触发所有这些的点击事件。
有小费吗?
我有一系列带有“bloglink”类的链接。
他们有一个与之关联的点击事件——但此时这无关紧要。我正在尝试循环浏览它们并每 X 秒触发一次点击事件。这就是我所在的位置:
$('a.bloglink').each(function(){
var $bl = $(this);
setInterval(function(){
$bl.trigger('click')
},2000);
})
但它只是一次触发所有这些的点击事件。
有小费吗?
你可以这样做:
(function Loop(){
var arry = $("a.bloglink").get();
var traverse = function(){
$(arry.shift()).trigger('click');
if (arry.length)
setTimeout(traverse, 2000);
};
setTimeout(traverse,2000);
})();
你可以在这里看到它的作用:http: //jsfiddle.net/Shmiddty/B7Hpf/
要重新开始,您只需添加一个 else 案例:
(function Loop(){
var arry = $("a.bloglink").get();
var traverse = function(){
$(arry.shift()).trigger('click');
if (arry.length)
setTimeout(traverse, 2000);
else
Loop(); // Do the whole thing again
};
setTimeout(traverse,2000);
})();
见这里:http: //jsfiddle.net/Shmiddty/B7Hpf/1/
创建一个函数来设置计时器以运行您的代码,清除计时器,然后在下一个元素上调用自身......
function processNext($current)
{
$h = setInterval(function() {
$current.css('color', 'green');//do your business here
clearTimeout($h);
if ($current.next('a.blah').size()>0)
{
processNext($current.next('a.blah'));
}
}, 750);
}
processNext($('a.blah').eq(0));
见这里:http: //jsfiddle.net/skeelsave/6xqWd/2/