Javascript jQuery-off方法
我已经在id为“myId”的元素上绑定了一个click处理程序。我为此提供的代码是:Javascript jQuery-off方法,javascript,jquery,onclick,bind,Javascript,Jquery,Onclick,Bind,我已经在id为“myId”的元素上绑定了一个click处理程序。我为此提供的代码是: $(document).on('click','#myId',function() { alert('Hello world!'); }); 然后,当我想解开那个处理器时,我试着: $('#myId').unbind('click'); $('#myId').off('click'); 但是没有用。有人对此有想法吗?我的意思是,我该如何在“myId”元素上解除单击处理程序的绑定?我必须补充一点,单击
$(document).on('click','#myId',function() {
alert('Hello world!');
});
然后,当我想解开那个处理器时,我试着:
$('#myId').unbind('click');
$('#myId').off('click');
但是没有用。有人对此有想法吗?我的意思是,我该如何在“myId”元素上解除单击处理程序的绑定?我必须补充一点,单击处理程序是在加载页面后创建的元素上添加的
谢谢
PS:我把这个问题命名为GWT问题,我很抱歉这是我的错
*编辑:*
我有以下场景:我创建了一个标记为“myId”的元素,然后将一个click处理程序附加到它,然后我必须删除该元素。过了一会儿,我再次创建该元素,并附加一个新的单击处理程序。问题是前面的处理程序不是无界的。我希望这会有所帮助 应该在文档对象上调用“off”方法,而不是在单击处理程序上绑定的元素。即
$(document).off('click','#myId');
我以前也遇到过这种情况,这段代码对我很有用 您的
呼叫中的选择器不正确。如果它是一个ID,它应该是#myId
是否有任何理由将事件直接添加到$(文档)
而不是$(“#myId”)
?如果您没有在页面中以友好方式添加元素,则只需使用$('#myId')即可应用单击绑定
或快捷方式$('#myId')。单击(function(){/*…*/})代码>。通过这种方式,您还可以使用$('#myId')禁用它。关闭('click')正如你所尝试的那样。格雷厄姆,你是绝对正确的。我马上更正了。问题是myId元素是在页面加载后创建的。我尝试过这段代码,但没有用,当我单击元素时,什么都没有发生。@您使用的Ballman称为委托事件处理程序,专门用于加载页面后创建的元素。在创建这些元素时,不需要再次绑定事件处理程序;这就是我们要避免的事件。只有在希望更改功能的情况下,才可以删除现有的单击处理程序并绑定新的单击处理程序。“您应该在文档对象上调用“off”方法,而不是将单击处理程序绑定到文档上的元素”,这正是您必须在文档上调用.off()
的原因。