github
不可以。在JavaScript中,removeEventListener
需要一个与原来addEventListener
中使用的完全相同的函数引用才能正确地移除事件监听器。
这意味着以下代码是无效的:
// 添加事件监听器
document.addEventListener('keydown', function(event) {
console.log('Key pressed:', event.key);
});
// 尝试移除事件监听器(这将不起作用)
document.removeEventListener('keydown', function(event) {
console.log('Key pressed:', event.key);
});
在上面的例子中,两个匿名函数虽然看起来相同,但它们是不同的函数对象。因此,removeEventListener
无法移除第一个匿名函数。
正确的做法是使用一个函数引用:
// 定义一个函数
function handleKeydown(event) {
console.log('Key pressed:', event.key);
}
// 添加事件监听器
document.addEventListener('keydown', handleKeydown);
// 移除事件监听器
document.removeEventListener('keydown', handleKeydown);
在这个例子中,handleKeydown
是一个函数引用,所以它可以被用来添加和移除事件监听器。这样,removeEventListener
就能正确地移除事件监听器。