javascript - js : removeEventListener for function(){}

标签 javascript events

使用像 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/

相关文章:

javascript - 使用 jquery 计算空或非空 TD

javascript - 显示函数被调用的位置,而不是定义它的位置 console javascript

c# - 在 Windows 7 中捕获控制台退出 C#

events - 我在哪里可以找到 LightSwitch 中的关键事件?

c# - Asp.NET 服务器控件回发

javascript - EventSource (SSE) 是否应该无限期地尝试重新连接?

javascript - 如何通过模板将 xml block 从 Django 数据库传递到 javascript?

javascript - Chrome 中随机丢失 javascript 音频

c# - 向接口(interface)/实现添加事件

java - 雷击事件处理