Javascript jQuery.off(“单击”)事件不起作用

Javascript jQuery.off(“单击”)事件不起作用,javascript,jquery,Javascript,Jquery,这已经困扰了我几个小时了,我仍然很困惑为什么它不起作用。。。当我使用table.off(“单击”)时它可以工作,但也会在第一个没有id=multi的子项上解除单击事件的绑定 var table=$(“表#数据表”) var按钮=$(“.generate”) 函数关闭单击(){ console.log(“单击按钮”) var multiButton=$(“标签#多”) 多按钮关闭(“单击”); } 表.打开(“单击”,按钮,关闭单击) 生成 生成多个 您正在从表中获取事件,但正在从标签中删除事

这已经困扰了我几个小时了,我仍然很困惑为什么它不起作用。。。当我使用
table.off(“单击”)时它可以工作,但也会在第一个没有id=multi的子项上解除单击事件的绑定

var table=$(“表#数据表”)
var按钮=$(“.generate”)
函数关闭单击(){
console.log(“单击按钮”)
var multiButton=$(“标签#多”)
多按钮关闭(“单击”);
}
表.打开(“单击”,按钮,关闭单击)

生成
生成多个

您正在从表中获取事件,但正在从标签中删除事件

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

事件位于
表#数据表
中,而不在
标签#多

尝试以下解决方案:

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

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

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

您可以在所有行中添加事件click,然后在单击的行中删除该事件。如果您想在第一次单击后分离事件,可以使用jQuery

var table=$(“表#数据表”)
函数关闭单击(){
控制台日志(“点击按钮”);
}
表.on(“单击“,”。生成:非(.multi)”,关闭单击);
表1(“点击”,“标签.多”,关闭点击)

生成
生成多个

您正在对一个没有事件处理程序的元素调用
off()
?我认为它有一个click事件处理程序,因为当我单击它时。。它在控制台上打印单词“button clicked”,该单词添加在具有类的标签上的“table.on”(“click”,button,turnOffClick)”。generate“事件处理程序位于
table
元素上。如果要禁用use
table.off('click',button,turnOffClick)
No,则事件侦听器位于其祖先元素之一(
table#datatable
)上。这就是为什么当您单击事件时会触发它。但是您没有明确地将事件侦听器添加到
标签#multi-element
。因此,您无法删除一个。可能不是解决方案,但您的标签具有类
multi
,并且您的代码-
var multiButton=$(“label#multi”)
-引用带有#符号的id。要引用一个类,您需要:
var multiButton=$(“label.multi”)
bind
?!!really@ZakariaAcharki您知道不使用
bind()
的原因吗?只是好奇,因为它只是在v3中被弃用了。我个人使用()上的
,但那只是因为我更喜欢这个词:pas它只是在v3中被弃用了,它在两年前就被弃用了:D@ZakariaAcharki是的,最新版本。我是认真的-除了“它在最新版本中被弃用”之外,你有理由不使用bind吗?@ZakariaAcharki我在问一个真实的问题。如果你没有一个真实的答案,那就说出来,而不要表现得像个6岁的人。。我也可以用它做我的其他功能,因为它也很短,我可以帮助我的兄弟。