我有一个input type="image"。这类似于Microsoft Excel中的单元格注释。如果有人在与此输入图像配对的文本框中输入数字,我将为输入图像设置一个事件处理程序。然后,当用户单击图像时,他们会看到一个小弹出窗口,向数据中添加一些注释。
我的问题是,当用户在文本框中输入0时,我需要禁用输入图像的事件处理程序。我试过以下方法,但都没用。
$('#myimage').click(function { return false; });
我有一个input type="image"。这类似于Microsoft Excel中的单元格注释。如果有人在与此输入图像配对的文本框中输入数字,我将为输入图像设置一个事件处理程序。然后,当用户单击图像时,他们会看到一个小弹出窗口,向数据中添加一些注释。
我的问题是,当用户在文本框中输入0时,我需要禁用输入图像的事件处理程序。我试过以下方法,但都没用。
$('#myimage').click(function { return false; });
当前回答
这可以通过使用unbind函数来实现。
$('#myimage').unbind('click');
你可以在jquery中为同一个对象和事件添加多个事件处理程序。这意味着添加一个新的并不会取代旧的。
有几种策略可以更改事件处理程序,例如事件名称空间。在线文档中有几页是关于这个的。
看看这个问题(这就是我学习解绑定的方法)。答案中对这些策略有一些有用的描述。
如何阅读绑定悬停回调函数在jquery
其他回答
这可以通过使用unbind函数来实现。
$('#myimage').unbind('click');
你可以在jquery中为同一个对象和事件添加多个事件处理程序。这意味着添加一个新的并不会取代旧的。
有几种策略可以更改事件处理程序,例如事件名称空间。在线文档中有几页是关于这个的。
看看这个问题(这就是我学习解绑定的方法)。答案中对这些策略有一些有用的描述。
如何阅读绑定悬停回调函数在jquery
如果你使用$(document).on()向动态创建的元素添加监听器,那么你可能必须使用以下方法来删除它:
// add the listener
$(document).on('click','.element',function(){
// stuff
});
// remove the listener
$(document).off("click", ".element");
如果事件以这种方式附加,目标将被解除附加:
$('#container').on('click','span',function(eo){
alert(1);
$(this).off(); //seams easy, but does not work
$('#container').off('click','span'); //clears click event for every span
$(this).on("click",function(){return false;}); //this works.
});
这也很好。简单易行。参见http://jsfiddle.net/uZc8w/570/
$('#myimage').removeAttr("click");
在回答这个问题时,这是不可用的,但您也可以使用live()方法来启用/禁用事件。
$('#myimage:not(.disabled)').live('click', myclickevent);
$('#mydisablebutton').click( function () { $('#myimage').addClass('disabled'); });
当您单击#mydisablebutton时,这段代码将会发生什么,它将把禁用类添加到#myimage元素中。这将使选择器不再匹配元素,事件将不会触发,直到'disabled'类被移除,使.live()选择器再次有效。
通过添加基于该类的样式,这还有其他好处。