首页 > 解决方案 > jQuery .off("click") 事件不起作用

问题描述

这已经困扰了我几个小时,并且仍然对它为什么不起作用感到困惑......当我使用table.off("click");它时,它也会取消绑定没有 id=multi 的第一个孩子的点击事件......

var table = $("table#datatable")
var button = $(".generate")

function turnOffClick() {
  console.log("button clicked")
  var multiButton = $("label#multi")
  multiButton.off("click");
}

table.on("click", button, turnOffClick)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table id="datatable">
<tr>
  <td>
    <label class="generate">Generate</label>&nbsp&nbsp
    <label class="generate multi">Generate Multi</label>
  </td>
</tr>
</table>

标签: javascriptjquery

解决方案


one()如果您想在第一次单击后分离事件,则可以使用 jQuery 。

var table = $("table#datatable")

function turnOffClick() {
  console.log("button clicked");
}

table.on("click", ".generate:not(.multi)", turnOffClick);
table.one("click", "label.multi", turnOffClick);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table id="datatable">
  <tr>
    <td>
      <label class="generate">Generate</label>&nbsp&nbsp
      <label class="generate multi">Generate Multi</label>
    </td>
  </tr>
</table>


推荐阅读