2017-02-28 5 views
0

私は、$(window).resize(または他のもの)によって呼び出される関数を調整してデバウンスする方法があるのか​​疑問に思った。私はスロットルだけにしようとしましたが、問題は、関数の次の実行前にサイズ変更を停止すると、本体の幅の100%を使用しているので、水平スクロールapearです。したがって、サイズ変更が行われた後も実行するように、私はそれをデバウンスする必要があります。どのように機能を抑制しデバッグするのですか?

別の方法が考えられる場合は、教えてください。

答えて

2

私は通常、setTimeoutでこれをやった:

// Timer handle; 0 = invalid handle 
var scrollTimer = 0; 
$("window").on("scroll", function() { 
    // Clear any pending work (it's okay to call with 0 [invalid handle], but add a guard if you like) 
    clearTimeout(scrollTimer); 
    // Schedule callback in X milliseconds 
    setTimeout(scrollHandler, 10); // 10 = 10ms, adjust as you like 
}); 
function scrollHandler() { 
    scrollTimer = 0; 
    // ... 
} 

新しいスクロールでも区間内に入ってきた場合は、scrollHandler前回の呼び出しが発生したことがないと私たちは新しいものをスケジュールします。最後の1ミリ秒後のXミリ秒、scrollHandlerが呼び出されます。

関連する問題