daf*_*afi 6 html javascript dom addeventlistener
关于DOM的一些愚蠢问题,请不要讨厌我
由于某些原因,我需要将一个匿名函数传递给addEventListener(主要是"传递"上下文变量),但是一旦调用了一个侦听器就可以删除了,所以我想了解下面显示的代码是否是正确的分离监听器的方法.
var item = document.createElement("div");
item.addEventListener("click", function(event) {
// do some stuff
// remove listener otherwise we generate a memory leak
item.removeEventListener("click", arguments.callee, false);
}, false);
var menu = document.getElementById("mymenu"); // some element
menu.appendChild(item);
Run Code Online (Sandbox Code Playgroud)
另一个问题,如果使用removeChild从其父元素中删除元素菜单,则会自动删除该侦听器?
我知道你想使用一个匿名函数,但你可能会更好地使用一个命名函数; 它应该仍然可以访问相同的外部变量.
也许这个:
var item = document.createElement("div");
var listener = function(event) {
// do some stuff
// remove listener otherwise we generate a memory leak
item.removeEventListener("click", listener, false);
};
item.addEventListener("click", listener, false);
var menu = document.getElementById("mymenu"); // some element
menu.appendChild(item);
Run Code Online (Sandbox Code Playgroud)
哦,我不恨你:)