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、予想されるレコード数よりも少ないかどうかを確認します(たとえば、1ページあたり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 に答える