あなたはグローバル変数やスクロールのコールバックの外に存続少なくとも変数に結果を格納することで、あまり頻繁に処理するために、処理の結果をキャッシュできます。
私たちは改善の余地があまりありませんので、コールバックにはほとんどありません。
var navbar = $('#navbar');
var navborder = false;
$(window).scroll(function() {
var scroll = $(window).scrollTop();
if (!navborder && scroll >= 40) {
navborder = true;
navbar.addClass("navbar-border");
} else if(navborder && scroll < 40) {
navborder = false;
navbar.removeClass("navbar-border");
}
});
http://codepen.io/t3hpwninat0r/pen/yOvaGN
別の方法としては、スクロール位置のチェックを無効にして、利用者ならば短い遅延の後
var scrollTimer = 0;
$(window).scroll(function() {
clearTimeout(scrollTimer);
scrollTimer = setTimeout(function() {
var scroll = $(window).scrollTop();
var navbar = $('#navbar');
if (scroll >= 40) {
navbar.addClass("navbar-border");
} else {
navbar.removeClass("navbar-border");
}
}, 100);
});
http://codepen.io/t3hpwninat0r/pen/BKYLMb
を再度有効にするには、タイマーを設定することができますスクロールを続行し、タイマーは再スタートし続け、機能は100msタイマーが完了したときにのみ実行されます。この例では、コードに4行しか追加しません。私が撮った
(読み:盗用)この回答からコード:https://stackoverflow.com/a/14092859/1160540
をあなたは、lodashまさにこれを行いますが、私たち 'throttle'機能を使用している場合。 https://lodash.com/docs#throttle –