1

您好我遇到了无限滚动功能的问题,当所有内容都显示出来时,它仍然继续滚动(奇怪的行为)。我正在寻找一种在显示所有内容时停止无限滚动的方法

这是我的代码

<script type="text/javascript">
jQuery(document).ready(function ($) {
(function () {
  var page = 1,
    loading = false,
    finish = false;


  function nearBottomOfPage() {
    return $(window).scrollTop() > $(document).height() - $(window).height() - 200;
  }

  function finish() {
    finish = true;

  }
  $(window).scroll(function () {
    if (loading) {
      return;
    }
    if (nearBottomOfPage() && !finish) {
      loading = true;
      $('#loader').show();
      page++;
      $.ajax({
        url: '/office?page=' + page,
        type: 'get',
        dataType: 'script',
        success: function () {
          $('#loader').hide();
          loading = false;
        }
      });
    }
  });
}());

})

这是我尝试过的

 <script type="text/javascript">
 jQuery(document).load(function($) {
 function scrollfn (event) {
if (loading) {
  return;
}
if (nearBottomOfPage() && !finish) {
  loading = true;
  $('#loader').show();
  page++;
  $.ajax({
    url: '/office?page=' + page,
    type: 'get',
    dataType: 'script',
    success: function () {
      $('#loader').hide();
      loading = false;
      $(window).unbind('scroll',scrollfn);
    }
    });
   }
   }

  $(window).bind('scroll',scrollfn);
 })
 </script>
4

1 回答 1

1

你永远不会调用你的“完成”功能。

调用finish();你的成功 ajax 回调

如果不起作用,请尝试 3 件事:

1)我认为您的功能检查nearBottomOfPage()不正确(请参阅我的答案以获得正确的版本:计算网页滚动结束)->也尝试禁用页面上的所有样式。如果您有任何负边距或负填充,它将搞砸您的滚动检测器计算。

2)暂时忘记你的nearBottomOfPage()- 我的意思是尝试将你的代码从更改if (nearBottomOfPage() && !finish)为 just if (!finish)- 如果你的完成调用有效,那么你肯定遇到了关于 nearBottomOfPage() 的问题,正如我在上面 #1 中所说的那样

3) 如果即使更改了项目 #2 它仍然无法正常工作,请尝试将绑定的回调从匿名函数中分离到一个单独的函数中,以便对其进行更多控制,因此您可以稍后取消绑定该回调,如下所示:

function scrollfn (event) {
    if (loading) {
      return;
    }
    if (nearBottomOfPage() && !finish) {
      loading = true;
      $('#loader').show();
      page++;
      $.ajax({
        url: '/office?page=' + page,
        type: 'get',
        dataType: 'script',
        success: function () {
          $('#loader').hide();
          loading = false;
          $(window).unbind('scroll',scrollfn);
        }
      });
    }
  }

$(window).bind('scroll',scrollfn);
于 2012-09-09T17:28:38.007 回答