0

您好我遇到了无限滚动功能的问题,当所有内容都显示出来时,它仍然继续滚动(奇怪的行为)。我正在寻找一种在显示所有内容时停止无限滚动的方法......但首先我需要知道何时没有更多页面/内容

这是我的代码

   <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).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;
    }
   });
      $.error(function(jqXHR, textStatus, errorThrown) {
    //Finish scrolling.
    finish();
});
  }
 });
 }());

我添加了 .error 功能,但它仍然没有工作:)

4

2 回答 2

1

当您从$.ajax调用中获得结果时,检查您是否获得了少于预期的记录数(例如,您希望每页 20 条,例如,您有 17 条),然后您位于结果集的末尾,您应该取消设置您的$(window).scroll事件,或者您应该设置一个导致事件处理程序短路的标志。

于 2012-09-15T22:53:53.547 回答
0

怎么样,

$.ajax({
     //calls  
    })
    .fail(function(jqXHR, textStatus, errorThrown) {
        //Finish scrolling.
        finish();
    });
于 2012-09-15T23:24:27.177 回答