我有一个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)
其他回答
如果你只想响应一个事件一次,下面的语法应该很有帮助:
$('.myLink').bind('click', function() {
//do some things
$(this).unbind('click', arguments.callee); //unbind *just this handler*
});
使用参数。被调用者,我们可以确保删除一个特定的匿名函数处理程序,因此,对于给定的事件只有一个时间处理程序。希望这能帮助到其他人。
删除内联onclick事件的最佳方法是$(element)。道具(onclick, null);
2014年更新
使用最新版本的jQuery,您现在可以通过简单地执行$(“#foo”)来解除名称空间上的所有事件绑定。(“。myNamespace”);
你可以添加onclick处理程序作为内联标记:
<input id="addreport" type="button" value="Add New Report" onclick="openAdd()" />
如果是这样,jquery .off()或.unbind()将不起作用。你需要在jquery中添加原始的事件处理程序:
$("#addreport").on("click", "", function (e) {
openAdd();
});
然后jquery有一个事件处理程序的引用,可以删除它:
$("#addreport").off("click")
VoidKing在上面的评论中更间接地提到了这一点。
我知道这来晚了,但为什么不使用纯JS删除事件?
var myElement = document.getElementById("your_ID");
myElement.onclick = null;
或者,如果你使用一个命名函数作为事件处理程序:
function eh(event){...}
var myElement = document.getElementById("your_ID");
myElement.addEventListener("click",eh); // add event handler
myElement.removeEventListener("click",eh); //remove it