如何防止JQuery单击reoccuring而不防止默认?

时间:2016-08-02 13:30:43

标签: jquery click preventdefault

我遇到了一个并不罕见的问题:我有一个“点击”事件,每次点击都会运行两次。

<label class='refinement genre-refinement'>
  <input type='checkbox' />
  <div class='refinement-checkbox'></div>
</label>

$(".genre-refinement").click(function() {
  console.log("Once or twice?");
}

这似乎是因为我有一个自定义的CSS复选框(当删除CSS时它只运行一次)。

我已尝试阻止默认但会阻止自定义复选框检查。类似于一个(“点击”)的东西是不合适的,因为标签需要随时可以检查和取消选中。我也试过在标签之外移动我的复选框,这似乎不起作用。

我想我可以通过在我的JQuery中添加一个复选标记并放弃自定义复选框来解决问题,但我希望可能有另一种选择。

感谢您的任何提示!

2 个答案:

答案 0 :(得分:0)

如何禁用控件。

$(".genre-refinement").click(function() {
  console.log("Once or twice?");
  $(this).prop('disabled', true);
}

但为什么点击被调用两次很奇怪。

答案 1 :(得分:0)

在复选框上使用更改事件

$(".genre-refinement :checkbox").change(function() {
      var isChecked = this.checked;
});

为什么你会让你的点击事件发生两次,这仍然是一个谜。