我无法弄清楚这个问题。

当我到达页面底部时,我使用此JS调用来加载ajax内容:

$(window).scroll(function() {
if($(window).scrollTop() + window.innerHeight == $(document).height()  ) {


并且效果很好,但是现在我想更改到达容器底部时的内容加载方式...我正在尝试这样做:

$(window).bind('scroll', function() {
if($(window).scrollTop() >= $('#postswrapper').offset().top +     $('#postswrapper').outerHeight() - window.innerHeight) {


当我到达容器的底部时,它会加载内容,但它会加载5次……好像每次都执行5次循环一样。

我希望它一次加载一次,然后当我返回上一页时,我到达容器的“ NEW BOTTOM”,再加载一次数据……等等

我尝试了很多变量,但无法弄清楚。有什么建议么?

完整的AJAX代码

$(window).bind('scroll', function() {
   if($(window).scrollTop() >= $('#postswrapper').offset().top + $('#postswrapper').outerHeight() - window.innerHeight) {



        $('div#loadmoreajaxloader').show();
        $.ajax
        ({
            url: "loadmore.php",
            method: "get",
            data: { page: pageNumber, perpage: perPage, search: "<?=$search?>", blogtag: "<?=$blogtag?>"},
            success: function(html)
                    {
                        if(html)
                        {
                            $("#postswrapper").append(html);
                            $('div#loadmoreajaxloader').hide();

                            pageNumber++;

                        }
                        else
                        {
                            $('div#loadmoreajaxloader').html('<center>No more posts to show.</center>');
                        }

                    }

        }); // close AJAX

        }  // close if()
}); // close $(window)

最佳答案

将条件设置为true后,将执行几次滚动顶部:

if($(window).scrollTop() >= $('#postswrapper').offset().top + $('#postswrapper').outerHeight() - window.innerHeight)


这是一个用于窗口滚动的测试小提琴,它在您移动滚动时始终会触发,并且您的条件不会将内部范围限制为仅执行一次。

test scrool event

编辑:最简单的方法是在执行ajax请求时以及在使用新内容更新UI时使用锁。

关于javascript - 到达容器底部时的AJAX负载,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34186905/

10-11 19:31