我有一个<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);
我不确定如何引用侦听器,到目前为止我没有尝试过从元素中删除事件。
有什么想法吗?
干杯
斯图尔特答案 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');
希望这对正在寻找此答案的人有所帮助。