javascript - 防止多次点击时间隔排队

标签 javascript jquery

我使用 setInterval 函数创建了简单的脚本,它在第一次按钮单击时工作正常,但如果我单击按钮几次,我的间隔就会排队!我尝试使用 Jquery 的 one 函数来解决此问题,但随后我无法再次设置 Intereval。
有办法防止这种情况发生吗?谢谢你!!
Fiddle example
我的代码:

 var changeClass=function(){

   if($('ul li.active').length==0){
   $('ul li:first').addClass('active');
   }
    else if($('.active').next().length==0){
       $('.active').removeClass('active');
       $('ul li:first').addClass('active');
    }
      else{
      $('.active').removeClass('active').next('li').addClass('active')
      }

 } 

$(document).ready(function() {
 var intervalID;
    $(".button").click(function(){
    intervalID=setInterval(changeClass,1000);
    });

      $(".clear").click(function(){
      clearInterval(intervalID);
      });

});

最佳答案

那么你到底想做什么?如果您希望在设置时间间隔后忽略开始按钮,请像这样编写您的点击处理程序:

$(".button").click(function() {
    if(!intervalID) {
        intervalID = setInterval(changeClass,1000);
    }
});

如果您希望开始按钮重新开始间隔,那么您可以在每次单击开始按钮时单击清除按钮,如下所示:

$(".button").click(function(){
    // Perform a click on the clear button
    $(".clear").click();

    intervalID = setInterval(changeClass,1000);
});

$(".clear").click(function(){
    clearInterval(intervalID);
});

关于javascript - 防止多次点击时间隔排队,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11807534/

相关文章:

javascript - 如何在我的 json 数据文件更改时刷新页面

javascript - 如何正确创建这个正则表达式,jquery

javascript - 这个对象在 .mouseenter() 函数中

javascript - 压缩重复的 jQuery 语句

javascript - 在angularjs中说早上晚上和下午

javascript - 光滑的旋转木马不显示/工作

javascript - 使用 json 数据动态生成下拉菜单?

JavaScript new Date() 在 IE、Safari 中返回 NaN

javascript - 是否可以使用 javascript 创建带有 wifi P2P 连接的移动应用程序?

jquery - 使用 jQuery 进行实时搜索时 AJAX 超时