jQuery のscroll()
関数を使用すると、スクロール イベントがユーザー (マウス スクロール、スクローラーのドラッグ) または DOM エンジン (要素の追加または削除) によって作成されたかどうかを検出できます。DOM エンジンによって起動されたスクロール イベントを識別するにはどうすればよいですか。
この jsfiddleは、私が意図したことを明確に示しています。
jQuery のscroll()
関数を使用すると、スクロール イベントがユーザー (マウス スクロール、スクローラーのドラッグ) または DOM エンジン (要素の追加または削除) によって作成されたかどうかを検出できます。DOM エンジンによって起動されたスクロール イベントを識別するにはどうすればよいですか。
この jsfiddleは、私が意図したことを明確に示しています。
これを処理する方法はたくさんありますが、信じられないほど公式なものは知りません。
簡単な方法の 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の特別なイベントを作成するのがおそらく最も楽しいでしょうが、私が概説した解決策はおそらく最も簡単です。