删除元素上的事件侦听器的最佳方法是什么?

时间:2015-06-03 05:56:47

标签: javascript jquery

jQuery .off() API只能删除使用自己的on(或jQuery中的bind)方法添加的事件,许多第三方插件可能会使用pure添加事件javascript以及由于浏览器兼容性问题,是否有任何单行代码可以更轻松地完成这些工作?

3 个答案:

答案 0 :(得分:4)

如果事件处理程序添加了.addEventListener(),则删除它的唯一方法是使用.removeEventListener(),这意味着您还需要知道处理函数才能使用{{1}因此,如果使用匿名函数作为处理程序,则无法删除事件侦听器。

在某些情况下,从DOM元素中清除所有事件侦听器的繁琐方法是用相同类型的新元素替换它(可能在保留子元素时这样做)。这显然是一种钝器,因为它将清除与先前DOM元素相关联的所有状态。

答案 1 :(得分:1)

如果事件由jQuery.on()添加,您可以使用jQuery.off()将其删除。

如果事件由jQuery.bind()添加,您可以使用jQuery.unbind()将其删除。

如果在纯javascript中使用纯.addEventListener()添加了该事件,则可以使用.removeEventListener()将其删除。

答案 2 :(得分:0)

如果插件添加了事件,那么您将不会知道如何添加事件的方法,因此为了确保删除事件,您需要清除DOM元素并创建一个与该元素相同的新元素。被删除...