Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 更改滚动逻辑上的自动加载(防止用户等待)_Jquery_Autoload - Fatal编程技术网

Jquery 更改滚动逻辑上的自动加载(防止用户等待)

Jquery 更改滚动逻辑上的自动加载(防止用户等待),jquery,autoload,Jquery,Autoload,目前,当用户到达站点底部时,我使用以下逻辑从数据库自动加载新帖子: $(window).scroll(function() { if ($(window).scrollTop() == $(document).height() - $(window).height()) { last_msg_funtion(); } }); 很公平。它做了它应该做的,但我想改变这一点,这样当用户距离网站底部100像素时,它就开始加载新帖子。有什么想法吗?当我尝试更改代码时,我: **进入了一个几乎无休

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

$(window).scroll(function() {
 if ($(window).scrollTop() == $(document).height() - $(window).height()) {
  last_msg_funtion();
 }
});
很公平。它做了它应该做的,但我想改变这一点,这样当用户距离网站底部100像素时,它就开始加载新帖子。有什么想法吗?当我尝试更改代码时,我:

**进入了一个几乎无休止的最后一次_msg_function()调用循环,因为if()语句匹配,例如从距底部100像素处开始,滚动时每个像素向下匹配到0像素。所以,如果你滚动得很慢,你可能会在离底部100像素的位置停下来,但这在现实生活中是行不通的

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

那么,我应该做些什么来确保它在距离站点底部0->100像素的时候开始加载,但同时不要每次都发送一个新的请求,在它仍在加载时,在任何方向上更改滚动位置几像素


谢谢

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

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

。这是检查滚动位置与实际底部的距离是否为0-100px…您可能希望确保
last\u msg\u function()
在已加载的情况下不会执行任何操作(您无论如何都应该执行此操作),但除此之外,只需更改
if()

回答得好。另一件事是确保每次用户滚动时滚动函数只触发一次,否则,正如您所提到的,最后一个函数将被多次调用。试试这样的

var processScroll = true;
$(window).scroll(function() {
    if (processScroll  && $(window).scrollTop() > $(document).height() - $(window).height() - 100) {
        processScroll = false;
        last_msg_funtion();
        processScroll = true;
    }
});

谢谢你的提示。我无法使用您建议的确切方法(不知道为什么),但通过将逻辑移到它调用的方法中并添加超时(如所建议的),它似乎可以正常工作:-)