如何防止我的点击处理程序被设置两次?

时间:2017-01-06 20:23:56

标签: jquery jquery-ui events onclick click

我正在使用JQuery 1.12。由于某种原因,点击处理程序设置了两次,即使我在再次设置之前解除了点击的绑定...

  $styledSelect.unbind('click')
  console.log("setting click")
  $styledSelect.click(function(e) {
    console.log("opened");
    e.stopPropagation();
    $('div.select-styled.active').each(function() {
      $(this).removeClass('active').next('ul.select-options').hide();
    });
    $(this).toggleClass('active').next('ul.select-options').toggle();
  });

但是当我点击我的菜单打开它时,你会看到"打开"声明打印出两次。看我的小提琴 - http://jsfiddle.net/6fjnnu55/1/。有谁知道我如何正确设置我的点击处理程序,以便我不设置它两次?

1 个答案:

答案 0 :(得分:2)

问题似乎在第35-36行:

    }).focus(function() {
  $(this).find('.select-styled').click()

似乎"焦点"你点击选择小部件......我猜你要么不想一直点击焦点 ,要么甚至根本没有...

<强>更新

所以看一下我认为不会真正有用的事件,因为你需要区分你有一个事件的情况和两个被触发的事件......我为此使用了一个标志变量,见我更新的小提琴,特别是第30,39和75行

http://jsfiddle.net/6fjnnu55/3/

希望这有帮助!