Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/423.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Jquery单击处理程序卡在无限循环中_Javascript_Jquery - Fatal编程技术网

Javascript Jquery单击处理程序卡在无限循环中

Javascript Jquery单击处理程序卡在无限循环中,javascript,jquery,Javascript,Jquery,我有一个单击元素的处理程序。它陷入了一个无限循环。如何关闭此代码中第二次单击的侦听器。。。这样就不会重复了 我尝试在4.5秒后自动关闭切换。但是关闭的点击会触发另一次点击。。。等等 $(document).ready(function(){ $(".navbar-toggle").click(function() { setTimeout(function () { $(".navbar-toggle").click(

我有一个单击元素的处理程序。它陷入了一个无限循环。如何关闭此代码中第二次单击的侦听器。。。这样就不会重复了

我尝试在4.5秒后自动关闭切换。但是关闭的点击会触发另一次点击。。。等等

$(document).ready(function(){
          $(".navbar-toggle").click(function() {
             setTimeout(function () {
                $(".navbar-toggle").click();
             }, 4500);
          });
      }); 

在代码中添加一个“flag”变量

var has_clicked = false;
$(document).ready(function(){
    $(".navbar-toggle").click(function() {
        if(!has_clicked){
            setTimeout(function () {
                has_clicked = true;
                $(".navbar-toggle").click();
            }, 4500);
        }
    });
}); 
$(函数(){
函数callback2(){
$(“#测试”)。一个(“点击”,回调1);
}
函数callback1(){
console.log('hi');
setTimeout(callback2,4500);
}
$(“#测试”)。一个(“点击”,回调1);

});这就是我现在要做的,尽管我相信当我有更多的时间时,我会使用shole的方法。。。就目前而言,这项工作进展顺利

var is_open = false;
      $(document).ready(function(){
        $(".navbar-toggle").click(function() {
          if(!is_open){
            setTimeout(function () {
                is_open = true;
                $(".navbar-toggle").click();
                is_open = false;
            }, 3500);
          }
        });
      }); 

使用('click',function(){})上的“.navbar toggle”)而不是
$(“.navbar toggle”)。单击()@AdarshMohan不工作您不应该执行
$(“.navbar toggle”)。单击(函数(){$(“.navbar toggle”)。单击();})句号!应该有一些回调函数,而不是调用。你在这里手动触发一个事件,感觉像是黑客。您应该发布您正试图解决的问题。我不明白,$(“.navbar toggle”)是否会切换导航栏的可见性/弹出窗口?您想在打开后4.5秒后将其关闭吗?@AdarshMohan它们之间没有区别。单击之前是否已单击=true?否则它将在不将标志设置为false的情况下运行回叫循环?关于顺序,您是对的,对此表示抱歉!,我会编辑我的答案我相信这个编辑过的版本在用户点击时仍然只能工作一次,它将等待4.5秒,将标志切换为true,然后重新点击元素,之后它将不符合条件,什么也不做。如果您想运行多次,可以在导航关闭后将标志重置为false。现在使用此答案。。。试着稍微修改一下,我喜欢这样。我正在快速尝试另一个解决方案,但我看到你的snippit运行良好这确实存在一个问题,如果你在3.5秒之前单击切换,它会额外打开一段时间。。。但最终的状态总是正确的,我不希望它在3.5秒内再次被按下@shole有更好的解决方案,我将在某个时候实施。就在你发表评论之前,我想指出的是,当你快速点击多次时,它有一个问题……但无论如何,很高兴你解决了你的问题:)你的解决方案是最好的。我会在某个时候着手把它做好。你可以在DelawareTennisAcademy.com上看到它