0

重複の可能性:
Chrome で ScrollTop が非常にぎくしゃくする

次のコードを使用して、トップに戻るボタンと、ユーザーがスクロールするとフェードインするナビゲーションを取得しています。問題は、スクロールするたびにトリガーされるため、スクロールが非常にぎくしゃくすることです。これを行う別の方法はありますか?関数を1回だけトリガーする可能性がありますか?

    $(function () {
    $(window).scroll(function () {
        if ($(this).scrollTop() > 600) {
            $('#backToTop, #navigation').fadeIn();
        } else {
            $('#backToTop, #navigation').fadeOut();
        }
    });
    }); 

   });
4

2 に答える 2

1

たぶんタイムアウトを設定します...

function scrollit(){  
    if ($(this).scrollTop() > 600) {
    $('#backToTop').fadeIn();
    } else {
    $('#backToTop').fadeOut();
    }
     }

var timer;

$(window).scroll(function () {

window.clearTimeout(timer);
timer = window.setTimeout(function(){ scrollit(); }, 2000);

    }); 
于 2012-11-05T00:09:19.580 に答える
0

Ben Alman の jQuery スロットルまたはデバウンスプラグインを実装できます。基本的に、これにより、関数が特定の回数だけ実行されるように制限されます。両者の違いは次のサイトで説明されています。

簡単に言えば、スロットリングは関数の実行を delay ミリ秒ごとに 1 回までに制限しますが、デバウンスは関数が 1 回だけ実行されることを保証します (指定されたしきい値が与えられた場合)。

于 2012-11-04T23:54:18.163 に答える