1

現在、ユーザーがサイトの下部に到達したときに、データベースから新しい投稿を自動ロードするために次のロジックを使用しています。

$(window).scroll(function() {
 if ($(window).scrollTop() == $(document).height() - $(window).height()) {
  last_msg_funtion();
 }
});

けっこうだ。本来の機能を果たしますが、これを変更して、ユーザーがサイトの下部から100ピクセル離れたときに、新しい投稿の読み込みを開始するようにします。何か案は?コードを変更しようとしたとき、次のいずれかを実行しました。

** last_msg_function()呼び出しのほぼ無限のループに入りました。これは、if()ステートメントが、たとえば、下から100ピクセル離れた場所から、スクロール時に0ピクセルまでのすべてのピクセルに一致するためです。したがって、実際にゆっくりスクロールすると、下から正確に100ピクセルで停止することができますが、実際には機能しません。

**)私が定義する下からのピクセル、たとえば90ピクセルと正確に一致する必要があります。たとえば89または91ピクセルでスクロールを停止すると、何もロードされません。

したがって、サイトの下部から0-> 100ピクセル離れたときにロードが開始されるようにするには、何を変更すればよいですか。同時に、スクロール位置を数ピクセル変更するたびに新しいリクエストを送信しないでください。それがまだロードされている間に任意の方向?

ありがとう!

4

2 に答える 2

2

良い答えニック。もう1つ行うべきことは、ユーザーがスクロールするたびにスクロール関数が1回だけ起動するようにすることです。そうしないと、前述のように、last_msg_functionが複数回呼び出されます。このようなものを試してみてください...

var processScroll = true;
$(window).scroll(function() {
    if (processScroll  && $(window).scrollTop() > $(document).height() - $(window).height() - 100) {
        processScroll = false;
        last_msg_funtion();
        processScroll = true;
    }
});
于 2010-09-30T11:24:40.147 に答える
1

次のように、チェックを少し変更できます。

$(window).scroll(function() {
 if ($(window).scrollTop() > ($(document).height() - $(window).height() - 100)) {
  last_msg_funtion();
 }
});

ここで試してみることができます。これは、スクロール位置が実際の下部から 0-100px であることを確認しています...既にlast_msg_function()ロードされている場合は何もしないことを確認したい場合があります (とにかくこれを行う必要があります) 。変更が必要です。if()

于 2010-09-30T11:20:54.220 に答える