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

删除所有特定类型的事件侦听器

暨弘毅
2023-03-14
问题内容

我想删除使用添加的所有特定类型的事件监听器addEventListener()。我看到的所有资源都在说您需要执行以下操作:

elem.addEventListener('mousedown',specific_function);
elem.removeEventListener('mousedown',specific_function);

但是我希望能够在不知道当前状态的情况下清除它,如下所示:

elem.addEventListener('mousedown',specific_function);
elem.removeEventListener('mousedown');

问题答案:

如果不拦截addEventListener呼叫并跟踪侦听器,或者使用不幸的是允许使用此类功能的库,那么这是不可能的。

您可以做的最接近的事情是通过克隆元素来删除所有侦听器,这不会克隆侦听器集合。

注意:这还将删除元素子级上的侦听器。

var el = document.getElementById('el-id'),
    elClone = el.cloneNode(true);

el.parentNode.replaceChild(elClone, el);


 类似资料:
  • 问题内容: 在JavaScript中,删除使用bind()添加为事件侦听器的函数的最佳方法是什么? 例 我能想到的唯一方法是跟踪添加了bind的每个侦听器。 上面的示例使用此方法: 有没有更好的方法可以做到这一点? 问题答案: 尽管@machineghost所说的是正确的,但事件的添加和删除方式相同,但等式中缺少的部分是: 调用后会创建一个新的函数引用! 因此,要添加或删除它,请将引用分配给变量:

  • 问题内容: 我有一个按钮,并添加了一些按钮: 我可以通过以下方式删除它们: 如果我想一次删除所有侦听器,或者没有函数引用()怎么办?有没有办法做到这一点,或者我必须一个一个地删除它们? 问题答案: 我认为最快的方法是克隆节点,这将删除所有事件侦听器: 请注意,因为这也会清除所涉及节点的所有子元素上的事件侦听器,因此,如果要保留该侦听器,则必须一次显式删除一个侦听器。

  • 从元素中移除事件侦听器。 使用 EventTarget.removeEventListener() 从元素中删除一个事件监听器。 省略第四个参数 opts ,则默认使用 false 或者根据添加事件监听器时使用的选项来指定它。 const off = (el, evt, fn, opts = false) => el.removeEventListener(evt, fn, opts); con

  • 问题内容: 我有一个类似的反应成分: 这里,事件列表器已添加到组件。当我刷新页面时,它弹出窗口要求离开页面。 但是当我转到另一个页面并刷新时,它再次显示相同的弹出窗口。 我正在从中删除组件。那为什么不将其删除呢? 如何删除其他页面上的事件? 问题答案: 本应该得到的引用到在分配相同的回调。重新创建该功能将无效。解决方案是在其他地方(在本示例中)创建回调,并将其作为对和的引用传递: 反应钩子 您可以

  • 我目前正在尝试编写一些JavaScript来获取已单击的类的属性。我知道要正确地执行此操作,我应该使用事件监听器。我的代码如下: 我希望每次点击其中一个类时都有一个警告框来告诉我该属性,但不幸的是,这并不起作用。有人能帮忙吗?

  • 我试图在更新整数值时激发事件,但失败了。下面是我使用的代码: 我是不是漏掉了什么?