javascript - JQuery .on() 和 .off() 与我使用它们的方式不同

标签 javascript jquery ajax events event-handling

我有一个页面,当用户向下滚动到页面的特定部分时,我会触发一个 ajax 加载事件。我这里有以下 ajax 事件处理程序:

$(document).ajaxStart(function() {
$('#loader').show();
$(window).off('scroll');
    }); 

$(document).ajaxComplete(function() {
    $('#loader').hide();
  $(window).on('scroll');
    });  

为了防止 ajax 事件多次触发,我在 ajax 调用开始时关闭了滚动事件处理程序(我还编写了一个延迟函数,它也会在触发前等待几毫秒)。我的意图是在 ajax 完成后重新绑定(bind)滚动条。我知道这些事件正在发生,因为我的#loader div 正在按设计加载和卸载。不幸的是,卷轴从未重新绑定(bind),它一直处于关闭状态,我不明白为什么。因此,我加载了一个包含新内容的 ajax 页面,然后它停止工作。

最佳答案

名称“开”和“关”可能会混淆;您不能使用它们来打开和关闭事件。

off 方法从元素中完全删除事件处理程序。再次绑定(bind)事件时,必须指定事件处理器:

$(window).on('scroll', handlerFunction);

关于javascript - JQuery .on() 和 .off() 与我使用它们的方式不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12754407/

相关文章:

javascript - 将视频添加到 Javascript Canvas

javascript - 当用户单击缩略图时如何显示完整图像 ASP.NET

javascript - 使用 Node.js 存储哈希值

javascript - 简单的 jquery slider 问题

javascript - jQuery - 如何在条件为真时取消表单提交以防止默认

javascript - Smart Admin 如何将页面包含到主题的 Ajax 版本中?

javascript - 我的 Canvas 不只在我的服务器上绘制图像

javascript - 在动态 html 上添加 Keypress/keydown 事件

java - 从 JAVA 触发 jQuery AJAX 的 "error"回调函数

javascript - 滚动时如何自动加载数据