使用像 function foo(){} 这样的命名函数,通过 addEventListener 和 removeEventListener 似乎很容易。
但是,我还有另一种情况,使用无名函数可能会很有用,例如
addEventListener(
"thervent", function(){ /*whatever i want to do before removing the eventlistener afterwards.*/ ...removeEvenetListener("...",???,...); }
);
最佳答案
您需要将函数存储在变量中,以便在删除它时可以引用它。
var handler;
handler = function () {
/* ... */
removeEventListener("theEvent", handler);
};
addEventListener("theEvent", handler);
如果您愿意,您可以纯粹内联执行此操作,但如果您不理解闭包,则其表达式会有点困惑1。这种方法的优点是处理程序的名称不会污染添加事件监听器的函数的范围。
addEventListener("theEvent", (function () {
function handler () {
/* ... */
removeEventListener("theEvent", handler);
};
return handler;
}()));
<小时/>
1当然,如果你不理解闭包,那么你应该在编写另一行 JavaScript 之前立即去了解它们,因为这是该语言中最有用和最强大的功能之一.
关于javascript - js : removeEventListener for function(){},我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14900905/