我有一个按钮,并添加了一些按钮eventlistners:
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)怎么办?有没有办法做到这一点,或者我必须一个一个地删除它们?
funcA
我认为最快的方法是克隆节点,这将删除所有事件侦听器:
var old_element = document.getElementById("btn"); var new_element = old_element.cloneNode(true); old_element.parentNode.replaceChild(new_element, old_element);
请注意,因为这也会清除所涉及节点的所有子元素上的事件侦听器,因此,如果要保留该侦听器,则必须一次显式删除一个侦听器。