繁体   English   中英

jQuery .off(“click”)事件不起作用

[英]jQuery .off(“click”) event does not work

这已经困扰了我几个小时了,仍然困惑为什么它不起作用...当我使用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> 

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

 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> 

您从表中获取事件但从标签中删除事件。

$( "table#datatable td label" ).bind( "click", function() {
  console.log( "Sample" );
  var multiButton = $("label#multi");
  console.log(multiButton);
  $( "label#multi").off( "click" );
});
});

事件在table#datatable不在label#multi table#datatable

尝试此解决方案:

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

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

table.on("click", button, turnOffClick)

您在所有行中添加事件单击,然后该函数将删除单击行中的事件

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM