2012-02-16 66 views
1

我有一个使用addEventListener附加事件处理程序的DOM元素。当我想用removeEventListener将其删除时,我不再提及处理事件的函数。
如何删除事件侦听器,而不是将引用存储到全局的所有事件处理程序?如何在不引用处理函数的情况下删除事件处理程序?

我注意到,如果我使用Chrome开发人员工具编辑DOM元素,则不再处理事件。一个可行的解决方案是否在于此?

我没有使用和无法在这种特殊情况下使用类似jQuery的库。

回答

0

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

1

商店中的DOM元素的事件处理程序的引用:

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

后来:

e.removeEventListener(e.handlerToRemove);