我正在研究使用 jQuery 构建的 ui 选项卡。除一个问题外,一切正常——我做了一个 setInterval,它运行一个执行触发器(“点击”)的函数,以便它在 5000 毫秒后转到下一个选项卡。它很好地运行每个选项卡,问题是如果用户手动单击选项卡,setInterval 的计时器不会从 0 重新开始。例如,如果用户在 0 毫秒开始在 tab1 上并在 tab2 上单击2000 毫秒,setInterval 不会返回到 0,它会从 2000 开始运行到 5000 毫秒,然后转到 tab3。我明白为什么会这样,我只是想知道是否有一种方法可以重新启动 setInterval 计时,而不必执行 clearInterval() 并创建一个全新的 setInterval()。任何见解将不胜感激。
更新
感谢您的回复 - 我试图避免使用 clearInterval 的原因是因为我遇到了如何以 clearInterval 完全停止 setInterval 的方式编写代码的问题。代码设置为在用户单击选项卡时进行跟踪。问题是自动更改功能利用触发器('点击'),因此它运行我在选项卡自动更改时也编写的 clearInterval 函数。它本身似乎运行得相当好,但是一旦用户开始单击选项卡,setInterval 行为异常并且无法预测地切换选项卡。我怀疑正在发生的事情是几个 setIntervals 同时运行......这是代码(如果你还没有猜到它,我是 javascript/jquery 的新手)。我已经注释掉了部分以便它可以正常工作,但它仍然没有按我的预期运行(从第一篇文章开始)。
// auto change tabs
if( options.interval ) {
function timerCom() {
if( !$(".controller").hasClass('paused') ) {
var i = $(".tab-current > a").attr("rel");
//alert(i);
if( i == 3 ) {i = 0};
$container
.find('a')
.eq(i)
.trigger('click');
}
}
//$("#promo-items > li > a").click(function () {
//var timer;
//if( timer != null ) {clearInterval(timer);}
timer = setInterval(timerCom, options.interval);
//});
}
最佳答案
不,如果不清除计时器,则无法重新启动由 setInterval
设置的计时器。
关于javascript - 在 Javascript/jQuery 中重新启动 setInterval()(没有 clearInterval),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4328148/