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

Ste*_*lan 9 javascript javascript-events

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

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

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

var elem = document.getElementById("elemId");
elem.removeEventListener("click", ???? , false);
Run Code Online (Sandbox Code Playgroud)

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

有任何想法吗?

干杯

斯图尔特

Koo*_*Inc 8

将匿名点击处理函数移出addEventListener调用:

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

之后你应该能够:

var elem = document.getElementById("elemId");
elem.removeEventListener("click", elemEventHandler , false);
Run Code Online (Sandbox Code Playgroud)


Kou*_*Das 7

上面的答案是正确的。但是,以防万一,有人想要删除onclick附加到这样的按钮的功能,例如

<button type="button" onclick="submit()" id="tour-edit-save">Save</button>
Run Code Online (Sandbox Code Playgroud)

在这种情况下,要删除onclick附加的功能,就必须删除该属性onclick,这样就可以完美地工作。以下是使用 pure 删除的方法JavaScript

document.getElementById('tour-edit-save').removeAttribute('onclick');
Run Code Online (Sandbox Code Playgroud)

使用jquery

$('#tour-edit-save').removeAttr('onclick');
Run Code Online (Sandbox Code Playgroud)

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