猿问

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

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

我有一个input type="image"..这类似于MicrosoftExcel中的单元格注释。如果有人在文本框中输入数字,则input-image,则设置一个事件处理程序。input-image..然后,当用户单击image,他们得到一个小弹出,以添加一些笔记到数据。

我的问题是,当用户在文本框中输入零时,我需要禁用input-image的事件处理程序。我尝试了以下操作,但没有结果。

$('#myimage').click(function { return false; });


哔哔one
浏览 609回答 3
3回答

暮色呼如

jQuery≥1.7随着jQuery1.7的继续,事件API已经更新,.bind()/.unbind()仍然可用于向后兼容性,但首选方法是使用关于()/取消()职能。下面就是,$('#myimage').click(function()&nbsp;{&nbsp;return&nbsp;false;&nbsp;});&nbsp;//&nbsp;Adds&nbsp;another&nbsp;click&nbsp;event$('#myimage').off('click');$('#myimage').on('click.mynamespace', &nbsp;function()&nbsp;{&nbsp;/*&nbsp;Do&nbsp;stuff&nbsp;*/&nbsp;});$('#myimage').off('click.mynamespace');jQuery<1.7在示例代码中,您只是将另一个单击事件添加到图像中,而不是覆盖前一个:$('#myimage').click(function()&nbsp;{&nbsp;return&nbsp;false;&nbsp;});&nbsp;//&nbsp;Adds&nbsp;another&nbsp;click&nbsp;event然后,两个单击事件都会被触发。正如人们所说,您可以使用取消绑定来删除所有单击事件:$('#myimage').unbind('click');如果要添加单个事件,然后删除它(而不删除可能添加的任何其他事件),则可以使用事件名称空间:$('#myimage').bind('click.mynamespace',&nbsp;function()&nbsp;{&nbsp;/*&nbsp;Do&nbsp;stuff&nbsp;*/&nbsp;});为了删除你的事件:$('#myimage').unbind('click.mynamespace');

catspeake

这可以通过使用unbind函数来完成。$('#myimage').unbind('click');您可以在jQuery中向同一个对象和事件添加多个事件处理程序。这意味着增加一个新的并不能取代旧的。有几种更改事件处理程序的策略,例如事件名称空间。在线文档中有一些关于这一点的页面。看看这个问题(这就是我怎么学到解束缚的)。答案中对这些策略有一些有用的描述。如何读取jQuery中的绑定悬停回调函数
随时随地看视频慕课网APP
我要回答