是否有可能删除元素及其子元素的所有事件监听器?例如:
myElem.removeEventListeners();
我需要这个是因为我有一个带有事件的复杂元素,而我需要创建它的副本 - 就像一个静态图像,不会触发任何事件。
是否有可能删除元素及其子元素的所有事件监听器?例如:
myElem.removeEventListeners();
我需要这个是因为我有一个带有事件的复杂元素,而我需要创建它的副本 - 就像一个静态图像,不会触发任何事件。
cloneNode
,则不会复制事件监听器。attach/detach
监听器,并自己跟踪它们。类似于Dean Edwards' addEvent这样的东西。cloneNode
,则不会复制您的侦听器。请查看我的更新。 - gblazexwindow
对象中使用它。 - Tomáš Zato我不知道有没有,而且在谷歌上搜索也没有明显的结果。一个简单而笨拙的解决方案是创建一个函数,循环遍历每个事件并将其设置为null
,例如:
function removeEvents(obj)
{
obj.onblur = null;
obj.onchange = null;
obj.onclick = null;
// ...
}
按照以下方式调用此函数:removeEvents(myElem)
。完整的JavaScript事件处理程序列表可以在http://www.elated.com/articles/events-and-event-handlers/找到。
毫无疑问,有一种更优雅的编写此函数的方法,但我不知道是否有更优雅的解决此问题的方法。如果有人知道,请告诉我。如果您通过JavaScript库(如jQuery)绑定事件,则可能有其他更好的选项。
function () {}
)。 - Casey Chu
onclick=...
、addEventListener
、库等)? - Crescent FreshcloneNode(true)
,神奇地添加事件监听器将不会被复制。这在规范中有说明:http://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-EventListener - Crescent Fresh