Jquery点击处理程序陷入无限循环

时间:2016-03-10 01:10:08

标签: javascript jquery

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

我尝试在4.5秒后自动关闭切换按钮。但是,关闭点击会触发另一次点击...依此类推......

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

3 个答案:

答案 0 :(得分:1)

在代码中添加'flag'变量

def count_inner_arrays(arr)
  sub_arrays = arr.select { |el| el.is_a? Array }
  sub_arrays.empty? ? 1 : sub_arrays.map(&method(:count_inner_arrays)).inject(0, :+)
end  

答案 1 :(得分:1)

$(function(){
  function callback2(){
      $("#test").one("click", callback1);
  }

  function callback1(){
      console.log('hi');
      setTimeout(callback2, 4500);
  }

  $("#test").one("click", callback1);
});

jsFiddle Demo

这与你想要的相似吗?

使用.one()附加只执行一次的点击事件, 在回调函数中执行任何操作,并在4.5秒后再次附加它。如果你甚至无法修改你的代码,请告诉我,我会尝试考虑另外的工作

答案 2 :(得分:0)

这就是我现在要做的事情,虽然我相信当我有更多时间时会使用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);
          }
        });
      });