我有一个input type="image"。这类似于Microsoft Excel中的单元格注释。如果有人在与此输入图像配对的文本框中输入数字,我将为输入图像设置一个事件处理程序。然后,当用户单击图像时,他们会看到一个小弹出窗口,向数据中添加一些注释。
我的问题是,当用户在文本框中输入0时,我需要禁用输入图像的事件处理程序。我试过以下方法,但都没用。
$('#myimage').click(function { return false; });
我有一个input type="image"。这类似于Microsoft Excel中的单元格注释。如果有人在与此输入图像配对的文本框中输入数字,我将为输入图像设置一个事件处理程序。然后,当用户单击图像时,他们会看到一个小弹出窗口,向数据中添加一些注释。
我的问题是,当用户在文本框中输入0时,我需要禁用输入图像的事件处理程序。我试过以下方法,但都没用。
$('#myimage').click(function { return false; });
当前回答
我必须使用道具和attr将事件设置为null。我不能只选一个。我也无法摆脱工作的束缚。我正在做TD元素。
.prop("onclick", null).attr("onclick", null)
其他回答
删除所有事件处理程序,这对我来说是有效的:
删除所有事件处理程序意味着使用纯HTML结构,而不将所有事件处理程序附加到元素及其子节点。为此,jQuery的clone()提供了帮助。
var original, clone;
// element with id my-div and its child nodes have some event-handlers
original = $('#my-div');
clone = original.clone();
//
original.replaceWith(clone);
这样,我们就有了一个没有事件处理程序的克隆版本来代替原始版本。
祝你好运…
这可以通过使用unbind函数来实现。
$('#myimage').unbind('click');
你可以在jquery中为同一个对象和事件添加多个事件处理程序。这意味着添加一个新的并不会取代旧的。
有几种策略可以更改事件处理程序,例如事件名称空间。在线文档中有几页是关于这个的。
看看这个问题(这就是我学习解绑定的方法)。答案中对这些策略有一些有用的描述。
如何阅读绑定悬停回调函数在jquery
如果你使用$(document).on()向动态创建的元素添加监听器,那么你可能必须使用以下方法来删除它:
// add the listener
$(document).on('click','.element',function(){
// stuff
});
// remove the listener
$(document).off("click", ".element");
也许解绑定方法对您有用
$("#myimage").unbind("click");
如果.on()方法之前与特定选择器一起使用,如下例所示:
$('body').on('click', '.dynamicTarget', function () {
// Code goes here
});
unbind()和.off()方法都不能工作。
然而,.undelegate()方法可用于完全从事件中删除与当前选择器匹配的所有元素的处理程序:
$("body").undelegate(".dynamicTarget", "click")