删除一组事件侦听器

用户名

我有一堆事件监听器,如下所示:

<a id="target0" >target0</a>

<div id="container">
   <a id="target1" >target1</a>
   <a id="target2" >target1</a>
   <a id="target3" >target1</a>
   .. more targets with event listeners
<script>
   document.getElementById("#target1").addEventListener("click", ...);
   document.getElementById("#target2").addEventListener("mouseover", ...);
   document.getElementById("#target3").addEventListener("mouseout", ...);
   ... 
</script>

</div>

<script>
   document.getElementById("#target0").addEventListener("click", ...); 
</script>

如何编写一个函数,该函数将杀死事件Listener绑定到容器div内的所有DOM元素(带有函数引用或匿名函数),从而杀死所有DOM元素?

function killEvtListenersInsideContainerDiv(){
// loop to all DOM elements inside container that has event listeners and disable them
}

容器div由AJAX动态加载,因此其中的事件侦听器将有所不同。唯一的一个“静态”是target0。

尼基塔

如果将有多个容器,则应为每个容器添加内部类a,如下所示:

<div>
    <a class="container1" id="#target1"></a>
    ...
</div>

要删除事件,有两种方法,我推荐第二种方法,因为它更简单,更现代:1)仅在由于某些技术原因而无法使用jquery的情况下,才使用本机javascript

var elements = document.getElementsByClassName("container1");
elements.forEach(function(elem, i, arr) {
    element.removeEventListener("click");
}, this);

2)使用jQuery:

  //set
   $('.container1').click(function() {
        alert("click");
   });
   //remove
   $('.container1').click(function(){}); //just empty function() :) the same as .click(null)

更新:如果您不能添加类,请使用此

javascript:

 var elements = document.querySelector('#idDiv a'); //or '.classId a'
 elements.forEach(function(elem, i, arr) {
 element.removeEventListener("click");
}, this);

jQuery的

  $('#idDiv a).click(function(){});

无法检查之前是否设置过事件,如果您确实需要,请动手实现此功能(例如,使用标志)。如果功能已经存在,则新功能将始终覆盖以前的功能。在99.9%的情况下就足够了。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

无法删除(绑定的)事件侦听器

来自分类Dev

删除Dojo dGrid的事件侦听器

来自分类Dev

电子:删除beforeunload事件侦听器

来自分类Dev

Javascript删除“焦点”事件侦听器

来自分类Dev

无法删除(绑定的)事件侦听器

来自分类Dev

删除事件侦听器as3

来自分类Dev

无法删除事件侦听器

来自分类Dev

无法删除 touchmove 事件侦听器

来自分类Dev

从另一个事件目标中删除事件侦听器

来自分类Dev

多个单选按钮组的事件侦听器

来自分类Dev

删除元素还会删除其事件侦听器吗?

来自分类Dev

删除另一个脚本设置的点击事件侦听器

来自分类Dev

删除子功能事件侦听器

来自分类Dev

如何删除Aurelia中的事件侦听器?

来自分类Dev

无法删除CSS动画结束的事件侦听器

来自分类Dev

删除用于带节流功能的Scroll事件侦听器

来自分类Dev

reactjs事件侦听器beforeunload添加但未删除

来自分类Dev

如何删除在TypeScript中使用“ this”的事件侦听器?

来自分类Dev

更新或更改或删除/重置Javascript事件侦听器

来自分类Dev

无法删除事件侦听器TypeScript / OOP JavaScript

来自分类Dev

创建事件侦听器以从localStorage删除对象

来自分类Dev

最佳实践的确认:删除事件侦听器

来自分类Dev

未删除事件侦听器-点亮的元素

来自分类Dev

useEffect不会删除我的事件侦听器

来自分类Dev

如何删除从各个要素动态创建的事件侦听器?

来自分类Dev

如何在EaselJS对象中删除事件侦听器

来自分类Dev

如何在事件发生之前删除侦听器?

来自分类Dev

阻止函数执行或删除匿名事件侦听器

来自分类Dev

更新或更改或删除/重置Javascript事件侦听器

Related 相关文章

热门标签

归档