滚动到页面底部,偏移 - 函数运行多次

时间:2017-09-07 08:56:06

标签: javascript jquery

我有一些功能,它会检查用户是否滚动到页面底部,如果是,则运行ajax并将部分结果添加到当前页面。 这很好用,但是如果我要添加负数来更快地启动这个功能,getData()函数会运行很多次,而且所有代码都开始变得很奇怪 - 你可以向上滚动一个像素然后再次运行。下面是没有偏移的工作版本,接下来是偏移,这对我来说更好,因为函数开始时间较早,但加载getData()多次,这是错误的。

我考虑使用flag的一些解决方案 - true / false,但我无法确定这是怎么做的。

$(window).scroll(function() {
  if ((window.innerHeight + window.scrollY) >= document.body.offsetHeight) {
    console.log(counter)
    if (counter > sum) {
      return false;
    } else {
      getData(counter);
      counter++;
    }
  }
});

$(window).scroll(function() {
  if ((window.innerHeight + window.scrollY) >= document.body.offsetHeight - 300) {
    console.log(counter)
    if (counter > sum) {
      return false;
    } else {
      getData(counter);
      counter++;
      //$(window).unbind('scroll');
    }
  }
});

1 个答案:

答案 0 :(得分:0)

感谢你的推荐。 多亏了这一点,我能够修复我的代码,现在一切正常。 下面的例子:

$(window).scroll(function() {
  var timer;
  if (timer) {
    window.clearTimeout(timer);
  }
  timer = window.setTimeout(function() {
    if ($(window).scrollTop() >= $(document).height() - $(window).height() - 500) {
      console.log(counter)
      if (counter > sum) {
        return false;
      } else {
        getData(counter);
        counter++;
      }
    }
  }, 200);
});