Javascript jQuery:如何解除绑定到文档对象的事件的绑定?

Javascript jQuery:如何解除绑定到文档对象的事件的绑定?,javascript,jquery,events,Javascript,Jquery,Events,我有一个坏的程序库正在做这个 $(document).on('click','#keep_first_only_button', function(){ 在这之后,我写了一段代码来“覆盖”这种不良行为 $("keep_first_only_button").unbind("click"); $("keep_first_only_button").on("click", selectKeepFirstOfAll); 但这不起作用,然后再次触发document.click函数处理程序 我无法从文

我有一个坏的程序库正在做这个

$(document).on('click','#keep_first_only_button', function(){
在这之后,我写了一段代码来“覆盖”这种不良行为

$("keep_first_only_button").unbind("click");
$("keep_first_only_button").on("click", selectKeepFirstOfAll);
但这不起作用,然后再次触发document.click函数处理程序

我无法从文档中解除所有单击事件的绑定,因为页面中将发生灾难

在这种情况下,哪种方法是正确的

编辑:很抱歉时间不够,我没有看到选择器中缺少的“#”。我真的很抱歉

$("#keep_first_only_button")...

缺少散列?

原始事件处理程序被绑定为委派事件,因此您无法将其从
$(“#保留_优先_仅_按钮”)本身中删除。
本身。您需要在
文档
级别删除它

发件人:

要删除特定的委托事件处理程序,请提供一个
选择器
论点选择器字符串必须与传递给的字符串完全匹配 连接事件处理程序时,
.on()
。删除所有委派的 在不删除非委派事件的情况下,使用 特殊值
“**”

换句话说,要解除委托事件的绑定,您应该使用与绑定它们时使用的参数集相同的参数集,而是将它们传递给
off
。由于绑定函数是匿名的,您无法引用它,因此您必须解除绑定到
文档
级别上的
按钮
的所有委托事件处理程序的绑定:

$(document).off('click', '#keep_first_only_button');

编辑:看起来问题只是缺少散列。奇怪的是,我认为您无法使用常规的
.off()
调用解除委托事件处理程序的绑定…

任何人都想知道…Mattias Buelens是正确的

如果将元素绑定为

$(document).on("click","#element",function(){ });
如果以后要关闭它,您必须按照以下步骤操作:

 $("#element").click(function(e) { 
    $(document).off('click', '#element'); 
});

如果您想删除事件,请考虑使用选择器使用< /P>


$(文档).off(“单击”、“**”)

哦,天哪,请不要否决我的问题,这就是问题所在。。。。对不起……我不会投反对票,因为这是一个真实的、解释得很好的问题,但我会把它放在一边,等待一个被接受的答案:糟糕的是,一个错过的哈希?我希望您不能使用
$('#foo').off('click')
解除委托事件处理程序的绑定。然后必须有更多的东西来
$.off()
…Downvoter,StackOverflow最重要的一个方面是,如果你对某人投了反对票,你就解释为什么,这样这里的每个人都可以学习。投反对票而不解释原因就离开没有任何价值,也剥夺了人们继续接受教育的权利。如果您能解释一下这个答案的错误,我将不胜感激。这是可行的,但问题是,正如首选答案所报告的那样,我只是缺少了“#”…):(Sorry你的答案当然很有用,谢谢,但是,真的,off起作用了,我试过crossbrowser,我都起作用了。我使用jquery对话框,当我在对话框中加载页面时,我使用:$(document).on('click','.blahblah',function(){});我一辈子都不明白为什么$('.blahblah').off()我没有清除点击事件。这个答案只为我节省了半天的挖掘时间。谢谢!伙计,你为我节省了很多时间。谢谢