我正在尝试在我的脚本中实现延迟滚动,它运行良好,直到到达末尾,我想阻止它发出额外的请求。
我使用以下方法将事件监听器添加到我的代码中:
window.addEventListener("scroll", _.throttle(checkScroll, 500));
但是,当我尝试删除它时,它似乎仍然在继续监听该事件并对该事件采取行动。
我已经尝试过:
if (json.articles.length == 0) {
$(".articles").append("<br>That's all folks!");
window.removeEventListener("scroll", _.throttle(checkScroll, 500));
}
和
if (json.articles.length == 0) {
$(".articles").append("<br>That's all folks!");
window.off("scroll");
}
但似乎都不起作用。
最佳答案
如果您使用纯 JavaScript 添加事件监听器,则删除它的唯一方法是保存对调用 _.throttle
的结果的引用。您传递给addEventListener
:
const handler = _.throttle(checkScroll, 500);
window.addEventListener("scroll", handler);
// ...
window.removeEventListener("scroll", handler);
你只能做类似 window.off('scroll')
的事情如果您还使用 jQuery 添加处理程序(例如 $(window).on(...)
然后 $(window).off(...)
)。如果您使用 Javascript 添加处理程序,则 jQuery 的 off
将无法使用。
关于javascript - 如何在 Javascript 中删除事件监听器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53941274/