関数を次のように変更します。
var page = $("html, body");
$( "section" ).click(function(e) {
page.on("scroll mousedown wheel DOMMouseScroll mousewheel keyup touchmove", function(){
page.stop();
});
page.animate({ scrollTop: $(this).position().top }, 'slow', function(){
page.off("scroll mousedown wheel DOMMouseScroll mousewheel keyup touchmove");
});
return false;
});
この意志:
- ユーザーが手動でスクロールした場合、アニメーションを停止します (アニメーション中のみ)。
- 通常のjQueryアニメーションを妨げません。他の回答のいくつかは
追加情報:
なぜこれらすべてのイベントにバインドしているのですか? 「マウスホイールなどをスクロール...」
スクロール イベントにはさまざまな種類があります。マウス、キーボード、タッチスクリーンなどを使用して下にスクロールできます。これにより、それらすべてを確実にキャッチできます。
の用途はvar page = $("html, body");
何ですか? $("html, body")
どこでも使えないの?
同じセレクターを複数回使用する場合は、変数にキャッシュすることをお勧めします。プログラムが毎回セレクターを再計算するよりも、記述/使用が簡単になり、パフォーマンスが向上します。
との詳細情報はどこに.animate()
あり.stop()
ますか?
.animate()および.stop()の jQuery ドキュメントを読むことができます。この原則に基づいて動作するため、アニメーション キューについても読むことをお勧めします。.stop()