2

どうすればこのようなことができますか?

myfunction () {

    if (notscrolling) {

        // do stuff

    }
}

これは私が見つけることができる最良の解決策です:

現在のスクロール位置を取得し、5 ミリ秒後に再度取得します。数字が同じ場合、ページはスクロールしていません! グローバル変数は必要ありません。

myfunction () {

    var a = $(document).scrollTop();

    setTimeout(function() { 
        var b = $(document).scrollTop();

            if (a === b) {

                // do stuff here cuz its not scrolling :) !!!!

            }
    }, 5);

}
4

3 に答える 3

1

scrollstart および scrollstop イベントについては、http: //james.padolsey.com/javascript/special-scroll-events-for-jquery/ を確認してください。

これらのイベントを使用してグローバル変数を設定し、scrollingそれを確認しますmyfunction

于 2012-12-13T20:18:19.963 に答える
1

この他の投稿はあなたの要件に非常によく合っていると思います: How to trigger ajax request on scroll stop?

あなたが達成したいのは、「scrollStop」の行の中の何かです。

于 2012-12-13T20:19:35.883 に答える
0

ウィンドウのスクロール イベントで、グローバル スクロール変数を true または false に設定し、スクロール イベント内に setTimeout を設定して x ミリ秒後にデフォルトに戻します。次に、そのグローバル変数の値を使用して、ウィンドウがスクロールしているかどうかを判断できます。

window.scrolling = false;
var timer;

$(window).on('scroll',function(){
    window.scrolling = true;
    clearTimeout(timer);
    timer = setTimeout(function(){
        window.scrolling = false;
        $(window).trigger("scrollend");
    },100);
});

function myfunction() {
    if (!window.scrolling) {
        alert("Window is not scrolling.");
    }
}

またはさらに良いことに、グローバルスコープを使用しないでください。

(function(){
    var timer, scrolling = false;

    $(window).on('scroll',function(){
        scrolling = true;
        clearTimeout(timer);
        timer = setTimeout(function(){
            scrolling = false;
            $(window).trigger("scrollend");
        },100);
    });

    function myfunction() {
        if (!scrolling) {
            alert("Window is not scrolling.");
        }
    }
})();
于 2012-12-13T20:31:37.490 に答える