要移除之前使用addEventListener()
方法注册的事件处理程序,可以使用removeEventListener()
方法,如下所示
element.removeEventListener(type, handler);
Code language: CSS (css)
假设您有一个带有类.btn
的按钮
<button class="btn">Register</button>
Code language: HTML, XML (xml)
以下定义了click
事件处理程序
function clickHandler(e) {
console.log('Button Clicked');
}
Code language: JavaScript (javascript)
以下将事件处理程序添加到按钮的单击事件中
const btn = document.querySelector('.btn');
btn.addEventListener('click', clickHandler);
Code language: JavaScript (javascript)
要从按钮的单击事件中移除单击事件处理程序,可以使用removeEventListener()
方法,如下所示
btn.removeEventListener('click', clickHandler);
Code language: JavaScript (javascript)
注意,事件和事件处理程序必须相同。如果您使用匿名函数作为事件处理程序,您将无法移除它。以下代码不起作用
const btn = document.querySelector('.btn');
// add an event listner
btn.addEventListener('click', function(e){
console.log('Button Clicked');
});
// this code won't work and has no effect
btn.removeEventListener('click', function() {
console.log('Button Clicked');
});
Code language: JavaScript (javascript)
大多数现代 Web 浏览器(包括 Chrome、Firefox 和 Edge)都支持removeEventListener()
方法。
IE8 不支持removeEventListener()
方法。它使用detachEvent()
方法代替。
如果您仍然需要支持 IE8,可以使用以下跨浏览器通用的辅助函数
function removeEvent(el, type, handler) {
if (el.detachEvent) {
el.detachEvent('on' + type, handler);
} else {
el.removeEventListener(type, handler);
}
}
Code language: JavaScript (javascript)
本教程对您有帮助吗?