jquery - 在第一次滚动时运行函数,然后不再运行

标签 jquery function scroll

我需要在第一次 .scrollTop() 更改时运行一个函数,然后不再运行。我尝试了一些方法,包括以下内容,但没有成功:

var view = $('#workspace');

view.bind("scroll resize", function() {
  doThisEveryScroll();
  if(view.scrollTop() == 3) {
    doThisOnFirstScroll();
  }
});

由于多种原因,这是错误的,但我不确定如何以其他方式解决这个问题。

  1. 仅当用户碰巧点击 .scrollTop() == 3 时才会运行,而使用滚轮时情况并非总是如此。
  2. .scrollTop() == 3 可能多次为 true。

最佳答案

使用 .one() 设置一个事件处理程序,该事件处理程序在调用后会自行分离:

$('#workspace').on('scroll resize', function() {
  doThisEveryScroll();
}).one('scroll resize', function() {
  if (Math.abs(100 - $(this).scrollTop()) < 20) {
    doThisOnFirstScroll();
  }
});

您还可以通过计算距目标的距离来为目标滚动位置提供误差范围:

Math.abs(100 - $(this).scrollTop()) < 20

如果用户位于 100px20px 范围内,则返回 true

关于jquery - 在第一次滚动时运行函数,然后不再运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12645428/

相关文章:

javascript - jQuery Conditional 基于元素的内部 HTML 内容

javascript - Chart.js - 条形图上的水平线干扰工具提示

javascript - bootstrap 3 上主体的自定义滚动条

javascript - 移动滑动菜单可滚动

javascript - 单击选项卡中带有 href 的标签时防止滚动 - Liferay

javascript - 在 jQuery 中将年、月和日转换为单个日期

jquery - 如何在 jcarousel 中获得可见的中间 li?

python 根据日期将列表列表中的列表元素求和为唯一

c++ - 从函数返回动态 C 样式字符串?

python - 尝试根据与数据框相关的 if 语句在 Pandas 中创建新的数据框列