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