1

目前,当用户到达网站底部时,我使用以下逻辑从数据库中自动加载新帖子:

$(window).scroll(function() {
 if ($(window).scrollTop() == $(document).height() - $(window).height()) {
  last_msg_funtion();
 }
});

很公平。它做了它应该做的事情,但我想改变它,以便当用户距离网站底部 100 像素时,它开始加载新帖子。有任何想法吗?当我尝试更改代码时,我要么:

** 进入了 last_msg_function() 调用的几乎无限循环,因为 if() 语句匹配例如从底部 100 像素的距离以及滚动时每个像素下降到 0 像素。所以,如果你滚动的速度真的很慢,你可能会设法在距离底部正好 100 像素处停下来,但这在现实生活中是行不通的。

**) 它必须与我定义的底部的像素完全匹配,例如 90 像素。如果您在 89 或 91 像素处停止滚动,它将不会加载任何内容。

那么,我应该改变什么以确保它在距离站点底部 0 -> 100 像素时开始加载,但同时不要每次都发送新请求以将滚动位置更改几个像素还在加载的时候有什么方向吗?

谢谢!

4

2 回答 2

2

好的答案尼克。另一件事是确保每次用户滚动时您的滚动功能只触发一次,否则,正如您所提到的,last_msg_function 将被多次调用。尝试这样的事情......

var processScroll = true;
$(window).scroll(function() {
    if (processScroll  && $(window).scrollTop() > $(document).height() - $(window).height() - 100) {
        processScroll = false;
        last_msg_funtion();
        processScroll = true;
    }
});
于 2010-09-30T11:24:40.147 回答
1

您可以稍微更改一下支票,如下所示:

$(window).scroll(function() {
 if ($(window).scrollTop() > ($(document).height() - $(window).height() - 100)) {
  last_msg_funtion();
 }
});

你可以在这里试一试这是检查滚动位置是否距离实际底部 0-100px...如果它已经加载,您可能希望确保它last_msg_function()不做任何事情(无论如何您都应该这样做),但除此之外,这是唯一的需要改变。if()

于 2010-09-30T11:20:54.220 回答