【问题标题】:Endless scrolling buffer is not honored不支持无休止的滚动缓冲区
【发布时间】:2012-06-08 07:45:04
【问题描述】:
我正在尝试构建一个在网格视图中显示图像的网络应用程序。我已经实现了一个所谓的无限滚动功能,效果很好。问题是我添加了一个 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 (); }
}
}
});
【问题讨论】:
标签:
jquery
infinite-scroll
【解决方案1】:
您使用的是什么版本的 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();
}
})
干杯,
迈克