无尽的滚动缓冲区不受尊重

时间:2012-06-08 07:45:04

标签: jquery infinite-scroll

我正在尝试构建一个在网格视图中显示图像的Web应用程序。我已经实现了所谓的无限滚动功能,它运行良好。问题是我添加了一个500像素的缓冲区,以便在到达页面末尾之前开始加载新图像,但这个缓冲区不受尊重。我必须在触发之前滚动到绝对底部。我该怎么办?

我正在使用此解决方案:http://www.hawkee.com/snippet/9445/

这是我的滚动代码:

$(window).scroll (function () {

 if ($(window).scrollTop () >= $(document).height () - $(window).height () - 500) {

  if (!self.loading) {

   if (self.stop) { return; }

    if (!self.pause) { self.append (); }

   }

  }

});

1 个答案:

答案 0 :(得分:0)

您使用的是哪个版本的jQuery?我最近刚刚实现了你所描述的几乎完全正确的东西。您可以尝试查看$(document).offset()['top'],看看您的body元素是否已向上移动。

所有if()语句也可能会降低浏览器的速度并降低scroll()事件发生率。如果这种情况很糟糕,您可以在触发事件之前深入滚动缓冲区。

提高速度的提示:

  • 在复杂比较之前移动简单/二进制检查。这样,如果他们返回false,你就没有浪费时间计算任何东西了
  • >=运算符替换为>,以节省一些(可能忽略不计的)处理能力。

如果以下内容不起作用,则它是您的jQuery版本或其他一些代码。

$(window).scroll(function(e){
  if(!self.loading && !self.stop && !self.pause && ($(window).scrollTop() + $(window).height()) > $(document).offset()['top'] + $(document).height() - 500){
    self.append();
  }
})

干杯,

麦克