【问题标题】:How to remove an event handler without a reference to the handler function?如何在不引用处理函数的情况下删除事件处理程序?
【发布时间】:2012-02-16 09:14:59
【问题描述】:

我有一个带有使用addEventListener 附加的事件处理程序的DOM 元素。当我想用removeEventListener 删除它时,我不再有对处理事件的函数的引用。
除了全局存储对所有事件处理程序的引用之外,如何删除事件侦听器?

我注意到,如果我使用 Chrome 开发人员工具编辑 DOM 元素,则不再处理该事件。这里有可行的解决方案吗?

在这种特殊情况下,我没有使用也无法使用像 jQuery 这样的库。

【问题讨论】:

    标签: javascript events


    【解决方案1】:

    在 DOM 元素中存储对事件处理程序的引用:

     e.handlerToRemove = handler;
     e.addEventListener( ..., handler );
    

    稍后:

     e.removeEventListener( e.handlerToRemove );
    

    【讨论】:

      【解决方案2】:

      你不能;你需要那个参考。要么像您自己建议的那样将其存储在全局范围内,要么像 Aaron Digulla 所说的那样将其存储在 DOM 元素中。

      【讨论】:

        猜你喜欢
        • 2019-02-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-02-17
        相关资源
        最近更新 更多