我正在研究使用 jQuery 构建的 ui 选项卡。除了一个问题外,一切正常 - 我做了一个 setInterval 运行一个执行触发器(“click”)的函数,以便它在 5000 毫秒后转到下一个选项卡。它可以很好地运行每个选项卡,问题是如果用户手动单击选项卡,setInterval 的计时器不会在 0 处重新启动。例如,如果用户要在 0 毫秒开始在 tab1 上单击 tab2 在2000 毫秒,setInterval 不会回到 0,它会从 2000 开始并运行到 5000 毫秒,然后会转到 tab3。我明白为什么会这样,我只是想知道是否有一种方法可以重新启动 setInterval 计时,而无需执行 clearInterval() 并创建一个全新的 setInterval()。任何见解将不胜感激。
更新
感谢您的回复 - 我试图避免使用 clearInterval 的原因是因为我遇到了如何以 clearInterval 完全停止 setInterval 的方式编写代码的问题。该代码设置为在用户单击选项卡时进行跟踪。问题是自动更改功能利用了触发器('click'),因此它运行我在标签自动更改时也编写的 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);
//});
}