如何从Javascript中的元素中删除click事件?

时间:2011-07-16 14:19:16

标签: javascript javascript-events

我有一个<div>元素,它使用以下代码附加了一个click事件:

var id = "someId";
var elem = document.getElementById("elemId");
elem.addEventListener("click", function() { someFunction(id); }, false);

稍后我会复制该元素并将其添加到DOM的其他部分,但需要先删除click事件

var elem = document.getElementById("elemId");
elem.removeEventListener("click", ???? , false);

我不确定如何引用侦听器,到目前为止我没有尝试过从元素中删除事件。

有什么想法吗?

干杯

斯图尔特

2 个答案:

答案 0 :(得分:7)

将匿名点击处理程序功能移出addEventListener调用:

var id = "someId";
var elem = document.getElementById("elemId");
var elemEventHandler = function() { someFunction(id); };
elem.addEventListener("click", elemEventHandler , false);

之后你应该能够:

var elem = document.getElementById("elemId");
elem.removeEventListener("click", elemEventHandler , false);

答案 1 :(得分:1)

上面的答案是正确的。 但是,万一有人希望删除附加到这样的按钮的 onclick 函数,例如

<button type="button" onclick="submit()" id="tour-edit-save">Save</button>

在这种情况下,要删除 onclick 附加函数,必须删除属性 onclick,这样才能正常工作。 以下是使用纯 JavaScript

删除的方法
document.getElementById('tour-edit-save').removeAttribute('onclick');

使用 jquery

$('#tour-edit-save').removeAttr('onclick');

希望这对正在寻找此答案的人有所帮助。