在jQuery中删除事件处理程序的最佳方法是什么?

我有一个输入type=“image”。这与Microsoft Excel中的单元格注释类似。如果有人在文本框中输入了一个与此输入图像配对的数字,我将为输入图像设置一个事件处理程序。然后,当用户单击图像时,会弹出一个小窗口,向数据添加一些注释

我的问题是,当用户在文本框中输入零时,我需要禁用输入图像的事件处理程序。我试过以下方法,但没有效果

$('#myimage')。单击(函数{return false;});

jQuery≥ 1.7

对于jQuery 1.7以后的版本,事件API已经更新,.bind()/.unbind()仍然可以向后兼容,但是首选方法是使用on()/off()函数。下面是

$('#myimage')。单击(函数(){return false;});//添加另一个单击事件
$(“#myimage”).off('click');
$('#myimage')。on('click.mynamespace',function(){/*Do stuff*/});
$('#myimage').off('click.mynamespace');

jQuery<1.7

在示例代码中,您只是将另一个单击事件添加到图像中,而不是覆盖前一个事件:

$('#myimage')。单击(函数(){return false;});//添加另一个单击事件

两个单击事件都将被触发

正如人们所说,您可以使用“取消绑定”删除所有单击事件:

$('#myimage')。解除绑定('click');

如果要添加单个事件,然后将其删除(而不删除可能已添加的任何其他事件),则可以使用事件名称空间:

$('#myimage').bind('click.mynamespace',function(){/*Do stuff*/});

要仅删除您的活动,请执行以下操作:

$(“#myimage”).unbind('click.mynamespace');

发表评论