0

我正在尝试构建一个在网格视图中显示图像的网络应用程序。我已经实现了一个所谓的无限滚动功能,效果很好。问题是我添加了一个 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 (); }

   }

  }

});
4

1 回答 1

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();
  }
})

干杯,

麦克风

于 2012-09-19T22:35:31.607 回答