2

ユーザーがページの特定の部分までスクロールしたときに ajax ロード イベントをトリガーするページがあります。ここには、次の ajax イベント ハンドラーがあります。

$(document).ajaxStart(function() {
$('#loader').show();
$(window).off('scroll');
    }); 

$(document).ajaxComplete(function() {
    $('#loader').hide();
  $(window).on('scroll');
    });  

ajax イベントが複数回発生するのを防ぐために、ajax 呼び出しの開始時にスクロール イベント ハンドラーをオフにします (また、発生する前に数ミリ秒待機する遅延関数も作成しました)。私の意図は、ajax が終了した後にスクロールを再バインドすることです。#loader div が設計どおりにロードおよびアンロードされているため、これらのイベントが発生していることはわかっています。残念ながら、スクロールは再バインドされず、オフのままで、その理由がわかりません。したがって、新しいコンテンツの単一の ajax ページをロードすると、機能しなくなります。

4

1 に答える 1

6

「オン」と「オフ」という名前は紛らわしいかもしれません。イベントのオンとオフを切り替えるためにそれらを使用することはできません。

このoffメソッドは、要素からイベント ハンドラーを完全に削除します。イベントを再度バインドするときは、イベント ハンドラーを指定する必要があります。

$(window).on('scroll', handlerFunction);
于 2012-10-05T21:47:25.017 に答える