10

window.onscrollイベントがあります

$(window).scroll(function(e){
    //My Stuff
});

しかし、私のコードでは、アニメーションスクロールをどこかに呼び出します

$('html, body').stop().animate({
   scrollTop:555
}, 1000);

したがって、ページを検出する方法は、ユーザーによるスクロールまたはコードによる呼び出しでした。私の現在の解決策は、コードを呼び出す前にフラグを立ててanimateクリアしますが、賢い解決策ではありません。e.which検出についても読んだことがありますe.originalEventが、機能しません。私はあなたの専門家がここで良い解決策を持っていると思います。

4

2 に答える 2

19
$('#scroller').scroll(function(e) {
    if (e.originalEvent) {
        // scroll happen manual scroll
        console.log('scroll happen manual scroll');
    } else {
        // scroll happen by call
        console.log('scroll happen by call');
    }
});

$('#scroller').scroll(); // just a initial call

e.originalEvent意志を呼び出してスクロールすると、undefined手動でスクロールするとscrollオブジェクトが表示されます。

デモ

于 2012-06-15T11:24:41.243 に答える
3

iveはこの質問を再度行い、2つの役立つ回答を得ました。
このスレッドを見つける他の人のために、ここに質問をリンクします。

スクロールイベントがjQueryで手動でトリガーされたかどうかを検出します

于 2013-12-23T07:33:40.163 に答える