1

jQuery のscroll()関数を使用すると、スクロール イベントがユーザー (マウス スクロール、スクローラーのドラッグ) または DOM エンジン (要素の追加または削除) によって作成されたかどうかを検出できます。DOM エンジンによって起動されたスクロール イベントを識別するにはどうすればよいですか。

この jsfiddleは、私が意図したことを明確に示しています。

4

1 に答える 1

0

これを処理する方法はたくさんありますが、信じられないほど公式なものは知りません。

簡単な方法の 1 つは、プログラムでスクロールを開始するときにトグルを設定し (クラスの設定など)、完了したらそれを削除することです。それがどのように機能するかを示すために、あなたのフィドルをフォークしました。

$("#scrollable")
    .addClass('programatically-scrolling')
    .scrollTo({
        top: $("#scrollable").prop("scrollHeight") - $("#scrollable").innerHeight(),
        left: 0
    }, 1000, {
        axis: 'y',

        // Add a function to remove the toggle when the animation is complete
        onAfter: function () {
            $(this).removeClass('programatically-scrolling');
        }
    });

$("#scrollable").scroll(function (event) {

    // This will be true when your $.scrollTo animation is going
    // and false when you trigger the scroll with your mouse
    console.log($(this).hasClass('programatically-scrolling'));
});

これに取り組む他の方法と、同じ質問をした他の人がいます。jQueryの特別なイベントを作成するのがおそらく最も楽しいでしょうが、私が概説した解決策はおそらく最も簡単です。

于 2013-04-01T16:24:05.170 に答える