我在页面中有元素:
<a class="element" onclick="do this"></a>
<a class="element" onclick="do this"></a>
<a class="element" onclick="do this"></a>
<a class="element" onclick="do this"></a>
我需要触发每个点击,并在触发点击之间延迟一段时间。
//for each one .element
$('.element').delay(800).trigger('click');
然后我需要重复这个周期作为infite周期,但我需要stop it when user click on a .element
我尝试过很多东西,比如$ .each(循环触发器);但我无法理解如何将所有人循环到无限,并在我伤心时停止它:(
答案 0 :(得分:0)
可能存在更优雅的解决方案,但这是我的两分钱:
$(function(){
$("a").on("click", function(e, d){
$(this).addClass("active").siblings().removeClass("active");
if(d !== true) {
clearInterval(timer);
}
});
$("a:first").addClass("active");
var timer = setInterval(doClick, 800);
function doClick() {
var $n = $(".active").next();
if ($n.length == 0) {
$n = $(".active").siblings().first();
}
console.log($n.length);
$n.trigger("click", [true]);
}
});
答案 1 :(得分:0)
我的解决方案:
$(function(){
var links = $('.element');
var timer = setInterval(function(){
links.each(function(index, value){
var link = $(this);
setTimeout(function(){
link.trigger('click', "trigger");
}, 100 + index * 50);
});
}, 800);
links.click(function(e, isTrigger){
e.preventDefault();
if(!isTrigger)
{
clearInterval(timer);
}
});
});