1

私は状況に出くわしています!

ユーザーがスクロールバーの一番下までスクロールするたびに、jscrollpane 内のコンテンツを更新しようとしています。

解決策が見つからなかったので、スクロールバーが下にあるときに ajax リクエストを送信しようとしました。

ただし、スクロールバーが atBottom に到達するたびに、イベントは停止しない実行中のプロセスに入ります。

event.stopPropagation() を使用しようとしましたが、失敗しました。

ここに私が取り組んでいるコードがあります:

$( 'div.scroll-pane-produts' ).bind( 'jsp-scroll-y',
    function( event, scrollPositionY, isAtTop, isAtBottom ) {
        if( isAtBottom ) {
            event.stopPropagation();
            // $.post('some-url');
            alert('infinite alerts from here');
        }   
    }
).jScrollPane();

質問自体はjscrollpaneのイベントに関連していますが、ajaxリクエストを通じてDIVコンテンツを更新するための別のソリューションもありがたいです!

前もって感謝します...

4

1 に答える 1

0

これはこの質問に対する直接的な回答ではありませんが、スクロールしていないときでもスクロールバーが何度も何度もイベントを発生させ続けていたため、Google でここにたどり着きました。

autoReinitaliseコンテンツが領域に追加/削除されたかどうかに関係なく、500ミリ秒ごとにスクロールバーを再初期化するだけを使用していたためです。

これが起こらないようにするために、いくつかのコードを追加しました。追加したコードは、高さが変更されない限り発火を防ぎます。

まず、 という変数を追加してprevHeightに設定しました0

次に、229 行目あたりでコードを調整しました。

if (settings.autoReinitialise && !reinitialiseInterval) {
     reinitialiseInterval = setInterval(
          function () {
               var clientHeight = pane[0].clientHeight; //Add this line of code
               if (prevHeight !== clientHeight || prevHeight === 0) { //Add this condition
                    initialise(settings);
                }
                prevHeight = clientHeight ; //Add this line of code
            },
            settings.autoReinitialiseDelay
     );
}

:私は垂直スクロールバーのみを気にし、水平スクロールバーは使用していません。両方を気にする場合は、2 つのチェック (1 つは縦方向、もう 1 つは横方向) が必要になります。変数を作成して、prevWidthそれを `pane[0].clientWidth.

これで私の問題は解決しました。このページに出くわした他の人の助けになることを願っています.

于 2013-10-11T19:58:59.380 に答える