Javascript删除“焦点”事件侦听器

Sun*_*mar 2 javascript

我想使用纯Javascript从元素中删除“焦点”事件监听器,但不起作用

document.getElementById("txttaskdateDeploy").removeEventListener("focus", function(e){});
Run Code Online (Sandbox Code Playgroud)

但下面的jQuery的作品

$("#txttaskdateDeploy").unbind("focus");
Run Code Online (Sandbox Code Playgroud)

谁能说出为什么它不能在纯JavaScript中工作

Que*_*tin 6

传递给第二个参数removeEventListener必须是要删除的函数。

您在那里有一个函数表达式,因此它将创建一个全新的函数。由于这是一个新功能,因此它无法与任何现有的事件侦听器匹配,因此不会删除它们。

这可以工作:

const x = function (e) { console.log(1); };
foo.addEventListener("focus", x);
foo.removeEventListener("focus", x);
Run Code Online (Sandbox Code Playgroud)

但这不会(两个不同但相同的功能不是相同的功能):

foo.addEventListener("focus", function (e) { console.log(1); });
foo.removeEventListener("focus", function (e) { console.log(1); });
Run Code Online (Sandbox Code Playgroud)