我有一个使用addEventListener
附加事件处理程序的DOM元素。当我想用removeEventListener
将其删除时,我不再提及处理事件的函数。
如何删除事件侦听器,而不是将引用存储到全局的所有事件处理程序?如何在不引用处理函数的情况下删除事件处理程序?
我注意到,如果我使用Chrome开发人员工具编辑DOM元素,则不再处理事件。一个可行的解决方案是否在于此?
我没有使用和无法在这种特殊情况下使用类似jQuery的库。
我有一个使用addEventListener
附加事件处理程序的DOM元素。当我想用removeEventListener
将其删除时,我不再提及处理事件的函数。
如何删除事件侦听器,而不是将引用存储到全局的所有事件处理程序?如何在不引用处理函数的情况下删除事件处理程序?
我注意到,如果我使用Chrome开发人员工具编辑DOM元素,则不再处理事件。一个可行的解决方案是否在于此?
我没有使用和无法在这种特殊情况下使用类似jQuery的库。
你不能;你需要那个参考。或者像您建议的那样将其存储在全球范围内,或者像Aaron Digulla所说的那样将其存储在DOM元素中。
商店中的DOM元素的事件处理程序的引用:
e.handlerToRemove = handler;
e.addEventListener(..., handler);
后来:
e.removeEventListener(e.handlerToRemove);