问题:
是否可以删除附加到 DOM 元素的所有事件监听器DOM 元素,例如 div?
答案:
理解您的问题,根据您的要求,有多种方法可以实现此目的。
删除所有事件处理程序
要删除所有事件处理程序,无论类型如何,您可以克隆该元素并将其替换为克隆。
var clone = element.cloneNode(true);
注意: 克隆会保留属性和子项,但不会保留 DOM 属性更改。
删除特定事件类型
匿名事件处理程序
如果您添加了匿名事件处理程序(功能上相当于将函数作为回调传递给addEventListener),您将遇到removeEventListener 的问题。这是因为匿名函数每次调用时都会创建一个新对象,因此无法专门删除它们。
解决方案:
非匿名事件处理程序
如果您的事件处理程序是非匿名的,您可以按预期使用removeEventListener。但是,您需要确保将用于添加侦听器的相同对象引用传递给removeEventListener。
示例:
function eventHandler() {} div.addEventListener('click', eventHandler); ... div.removeEventListener('click', eventHandler);
请记住如果您的代码频繁创建和删除元素,您可能需要管理存储在事件处理包装函数(提供的示例中的 _eventHandlers)中的引用,以避免内存泄漏。
以上是如何从 DOM 元素中删除所有事件监听器?的详细内容。更多信息请关注PHP中文网其他相关文章!