如何在不引用处理函数的情况下删除事件处理程序?

时间:2012-02-16 09:15:00

标签: javascript events

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

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

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

2 个答案:

答案 0 :(得分:1)

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

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

随后:

 e.removeEventListener( e.handlerToRemove );

答案 1 :(得分:0)

你不能;你需要那个参考。要么就像你自己建议的那样全局存储它,要么像Aaron Digulla那样将它存储在DOM元素中。