jquery - 删除事件监听器ajax
问题描述
使用 jQuery,我使用 GET 方法创建了一个 ajax 调用。如果用户滚动到底部,则会触发此请求。如果 ajax 调用正在运行,我想删除滚动侦听器。如果 ajax 调用成功添加滚动功能。我用 unbind 试过了,但这不起作用。
有没有人可以帮助我?
window.onscroll = function(ev) {
if ((window.innerHeight + window.scrollY) >= document.body.offsetHeight) {
$(window).unbind('scroll');
//ajax call
$.ajax({
type: "GET",
url: "result.php",
data: {
'offset': flag,
'limit':12
},
success: function(data){
$('.gallery').append(data);
flag += 12;
}
});
}
};
解决方案
命名 eventListener 中执行的函数并使用.on()
/.off()
删除监听器:
$(window).on("scroll", windowScroll);
function windowScroll(ev) {
if ((window.innerHeight + window.scrollY) >= document.body.offsetHeight) {
$(window).off('scroll', windowScroll); // remove the listener on scroll
//ajax call
$.ajax({
type: "GET",
url: "result.php",
data: {
'offset': flag,
'limit': 12
},
success: function(data) {
$('.gallery').append(data);
flag += 12;
$(window).on("scroll", windowScroll); // re-attach it when the request is finished
}
});
}
};
推荐阅读
- reactjs - React PWA Service Worker 在本地工作,但在 Netlify 上托管时不能
- vba - 使用 Do 循环的 VBA 计时器
- ios - 如何获取后台任务调度程序标识符 Xcode
- flutter - Flutter使用collectionGroup从firestore获取数据
- vue.js - Vue 文件在 dev 和 prod 之间生成的 HTML 的差异
- google-sheets - 如何在 Google 表格中使用 Arrayformula 的查询功能?
- macos - 从本地集群访问本地进程
- flutter - ANTLR4 颤振以访问 BuildVisitor 中的每个小部件
- reactjs - 从 typescript 中的 API 响应正确转换日期
- flutter - Flutter 使用提供程序加载数据是正确的选择吗?