超时时,我可以做类似
的事情let x = setTimeout(func, 0);
clearTimeout(x);
有没有办法做类似
的事情let x = document.addEventListener("click", func);
clearEventListener(x);
我似乎无法找到一种直截了当的方式来做这件事而且经常出现。
答案 0 :(得分:2)
下面是向元素添加事件侦听器然后在第一次处理事件时将其删除的示例代码。您可以通过再次单击该按钮并观察未执行处理函数来确认已删除事件侦听器。
var eventHandler = function(e) {
console.log('Handled the event once - now I\'m going to remove the eventListner via removeEventListener.');
//remove the event handler
e.target.removeEventListener('click', eventHandler);
}
//add an event handler
document.getElementById('btn').addEventListener('click', eventHandler);
<input id="btn" type="button" value="Example">
以下是这些方法的mdn文档:
https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener
https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/removeEventListener