滚动无休止加载或如何多次不触发事件

Endless Load on Scroll or how to no trigger an event numerous times

本文关键字:事件 何多次 无休止 加载 滚动      更新时间:2023-09-26

我实现了一个加载函数,每当到达页面末尾时就会触发该函数。它基本上起作用,但每当我向下滚动时,该事件就会被触发多次。有没有更好的方法来实现这个想法,或者而不是多次触发这个事件?

以下是我所做的:

var loading = false;
$(window).scroll(function(){
    if((($(window).scrollTop()+$(window).height())+250)>=$(document).height()){
        if(loading == false){
            loading = true;
            $.get("test", function(data){
             $("div.article:last").after(data);
});
            loading = false;
        }
    }
});
   $(document).ready(function() {
    $('#loaded_max').val(500);
});

谢谢!

您可以这样做:

$.get("test", function(data){
    $("div.article:last").after(data);
});
loading = false;

loading=false;在您的$.get回调函数之外。$.get是一个异步函数。loading=false;$.get之后直接执行,而不是在Ajax调用就绪时执行。

如果您将loading=false;放入$.get回调中。您不会同时有多个请求者。

一次只得到一个请求的解决方案:

$.get("test", function(data){
    $("div.article:last").after(data);
    loading = false;
});

此外,我会在人们到达底部之前开始加载页面的下一部分,比如400px。因此,他们可以继续滚动,而不必等待您的请求准备就绪。那样我会更顺利。