单击时多次触发事件

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

标签: javascript jquery html

我有一个与之关联的HTML按钮和点击事件。该事件多次发生。我试过.off& .unbind也。

$("div.onoffswitch").off().on("click", function() {
  alert("clicked");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.2/jquery.min.js"></script>
<div class="onoffswitch">
  <input type="checkbox" name="onoffswitch" class="onoffswitch-checkbox" id="myonoffswitch" checked>
  <label class="onoffswitch-label" for="myonoffswitch">
    <span class="onoffswitch-inner"></span>
    <span class="onoffswitch-switch"></span>
  </label>
</div>

更新:原始问题不明确,但如果label中有文字(问题代码中缺少),则会发生这种情况。

1 个答案:

答案 0 :(得分:2)

如果单击label for内的文本(在额外范围内或不在额外范围内),则会出现问题,它会为复选框引发一个单击事件 - 然后传播/冒泡到包含div。

label for允许您将复选框与相关文本相关联 - 单击文本并切换复选框。

您有两种选择:

  • 请勿使用label for链接文字+复选框
  • 不要在包含div上使用活动

如果您尝试允许其他点击更改文本框(例如,使用图片),请不要使用label for。但请记住,如果您之后使用该事件进行切换,则单击复选框本身将会切换 - 所以所有新问题都会出现。

如果您在复选框更改时尝试查找,请在复选框(而不是div)上使用label for changed()事件