我有一个input type="image"。这类似于Microsoft Excel中的单元格注释。如果有人在与此输入图像配对的文本框中输入数字,我将为输入图像设置一个事件处理程序。然后,当用户单击图像时,他们会看到一个小弹出窗口,向数据中添加一些注释。
我的问题是,当用户在文本框中输入0时,我需要禁用输入图像的事件处理程序。我试过以下方法,但都没用。
$('#myimage').click(function { return false; });
我有一个input type="image"。这类似于Microsoft Excel中的单元格注释。如果有人在与此输入图像配对的文本框中输入数字,我将为输入图像设置一个事件处理程序。然后,当用户单击图像时,他们会看到一个小弹出窗口,向数据中添加一些注释。
我的问题是,当用户在文本框中输入0时,我需要禁用输入图像的事件处理程序。我试过以下方法,但都没用。
$('#myimage').click(function { return false; });
当前回答
如果你使用$(document).on()向动态创建的元素添加监听器,那么你可能必须使用以下方法来删除它:
// add the listener
$(document).on('click','.element',function(){
// stuff
});
// remove the listener
$(document).off("click", ".element");
其他回答
希望我下面的代码说明一切。 HTML:
(function($){ $("#btn_add").on("click",function(){ $("#btn_click").on("click",added_handler); alert("Added new handler to button 1"); }); $("#btn_remove").on("click",function(){ $("#btn_click").off("click",added_handler); alert("Removed new handler to button 1"); }); function fixed_handler(){ alert("Fixed handler"); } function added_handler(){ alert("new handler"); } $("#btn_click").on("click",fixed_handler); $("#btn_fixed").on("click",fixed_handler); })(jQuery); <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <button id="btn_click">Button 1</button> <button id="btn_add">Add Handler</button> <button id="btn_remove">Remove Handler</button> <button id="btn_fixed">Fixed Handler</button>
也许解绑定方法对您有用
$("#myimage").unbind("click");
这可以通过使用unbind函数来实现。
$('#myimage').unbind('click');
你可以在jquery中为同一个对象和事件添加多个事件处理程序。这意味着添加一个新的并不会取代旧的。
有几种策略可以更改事件处理程序,例如事件名称空间。在线文档中有几页是关于这个的。
看看这个问题(这就是我学习解绑定的方法)。答案中对这些策略有一些有用的描述。
如何阅读绑定悬停回调函数在jquery
所有描述的方法对我来说都不起作用,因为我正在使用on()将单击事件添加到运行时创建元素的文档中:
$(document).on("click", ".button", function() {
doSomething();
});
我的解决方案:
因为我无法解开“。我只是给按钮分配了另一个类,具有相同的CSS样式。通过这样做,live/on-event-handler最终忽略了点击:
// prevent another click on the button by assigning another class
$(".button").attr("class","buttonOff");
希望这能有所帮助。
删除内联onclick事件的最佳方法是$(element)。道具(onclick, null);