当前位置: 首页 > 面试题库 >

如何删除元素中的所有侦听器?

董桐
2023-03-14
问题内容

我有一个按钮,并添加了一些按钮eventlistners

document.getElementById("btn").addEventListener("click", funcA, false);
document.getElementById("btn").addEventListener("click", funcB, false);
document.getElementById("btn").addEventListener("click", funcC, false);
document.getElementById("btn").addEventListener("blur" , funcD, false);
document.getElementById("btn").addEventListener("focus", funcE, false);

<button id="btn">button</button>

我可以通过以下方式删除它们:

document.getElementById("btn").removeEventListener("click",funcA);

如果我想一次删除所有侦听器,或者没有函数引用(funcA)怎么办?有没有办法做到这一点,或者我必须一个一个地删除它们?


问题答案:

我认为最快的方法是克隆节点,这将删除所有事件侦听器:

var old_element = document.getElementById("btn");
var new_element = old_element.cloneNode(true);
old_element.parentNode.replaceChild(new_element, old_element);

请注意,因为这也会清除所涉及节点的所有子元素上的事件侦听器,因此,如果要保留该侦听器,则必须一次显式删除一个侦听器。



 类似资料:
  • 问题内容: 我正在使用Python的库编写基于GUI的程序。我遇到了一个问题:我需要删除 所有 子元素(而不删除父元素,在我的情况下是)。 我的代码: 我该如何实现? 问题答案: 您可以用来获取特定小部件的所有子级的列表,然后可以对其进行遍历:

  • 问题内容: 我想删除使用添加的所有特定类型的事件监听器。我看到的所有资源都在说您需要执行以下操作: 但是我希望能够在不知道当前状态的情况下清除它,如下所示: 问题答案: 如果不拦截呼叫并跟踪侦听器,或者使用不幸的是允许使用此类功能的库,那么这是不可能的。 您可以做的最接近的事情是通过克隆元素来删除所有侦听器,这不会克隆侦听器集合。 注意:这还将删除元素子级上的侦听器。

  • 哦,我想这是一个很简单的问题...我只想从arraylist中删除非数字元素,只保留数字元素,我想这与java.lang.Number有关。 谢谢师父的指导 祝你有一个美好快乐的一天

  • 问题内容: 我想删除数组中的所有元素,例如: 有什么简单的方法可以做到吗,谢谢。 问题答案: 如果是 不 那么简单的重新分配将工作: 这假设您需要数组保持相同的大小。如果不需要,那么创建一个空数组: 如果 是这样, 那么您可以排除所有元素: 请参阅:void Arrays#fill(Object [],Object) 考虑使用一个或类似的集合

  • 问题内容: 如果删除了DOM元素,它的侦听器也会从内存中删除吗? 问题答案: 现代浏览器 纯JavaScript 如果删除的DOM元素是无引用的(没有指向它的引用),则是垃圾收集器以及与之关联的任何事件处理程序/侦听器都会拾取该元素本身。 然而; 如果仍然有引用指向该元素,则该元素及其事件侦听器将保留在内存中。 jQuery 假设jQuery中的相关方法(例如)将以完全相同的方式起作用(考虑是使用

  • 本文向大家介绍如何在JavaScript中删除DOM节点的所有子元素?,包括了如何在JavaScript中删除DOM节点的所有子元素?的使用技巧和注意事项,需要的朋友参考一下 删除<div>的子元素 我们可以用, 它将删除的所有子项 其ID为“ mList”。 示例 在您的代码中,它可以写为-