Javascript jQuery窗口滚动在用户滚动时停止触发
当用户向下滚动一定数量的像素时,我修复了标题。但是,有没有办法在用户满足逻辑后停止调用窗口滚动功能?我认为这对性能不好。请参见我的控制台的屏幕截图()Javascript jQuery窗口滚动在用户滚动时停止触发,javascript,jquery,performance,Javascript,Jquery,Performance,当用户向下滚动一定数量的像素时,我修复了标题。但是,有没有办法在用户满足逻辑后停止调用窗口滚动功能?我认为这对性能不好。请参见我的控制台的屏幕截图() 您必须不断检查滚动位置。我想当用户滚动到100时,您会想要取消锁定它 您当前的实现在性能方面很好。可以添加的一件事是检查类是否尚未添加,或者保留一个切换,以便知道类是否存在(而不是检查) 您必须不断检查滚动位置。我想当用户滚动到100时,您会想要取消锁定它 您当前的实现在性能方面很好。可以添加的一件事是检查类是否尚未添加,或者保留一个切换,以便知
您必须不断检查滚动位置。我想当用户滚动到100时,您会想要取消锁定它 您当前的实现在性能方面很好。可以添加的一件事是检查类是否尚未添加,或者保留一个切换,以便知道类是否存在(而不是检查)
您必须不断检查滚动位置。我想当用户滚动到100时,您会想要取消锁定它 您当前的实现在性能方面很好。可以添加的一件事是检查类是否尚未添加,或者保留一个切换,以便知道类是否存在(而不是检查)
您可以使用布尔值来降低操作成本,例如“如果(!alreadFixed&&$window.scrollTop()>100)”可能重复的@cernunnos在修复后会破坏函数,因此以后无法取消修复(在滚动到顶部后),因为JS将停止计算scrollTop。您可以使用一个布尔值来降低操作成本,例如“如果(!alreadFixed&&$window.scrollTop()>100)”可能重复的@cernunnos在修复后会破坏函数,因此以后无法取消修复(在滚动到顶部后),因为JS将停止计算scrollTop.exe,所以从技术上讲,
$('.header')
也可以缓存在处理程序之外,以提高性能并减少DOM交互。但只有当它是一个静态元素且不是动态添加/删除时,才可以这样做。从技术上讲,$('.header')
也可以缓存在处理程序之外,以提高性能并减少DOM交互。但只有当它是一个静态元素而不是动态添加/删除时,才需要这样做。
$window.scroll(function() {
if ($window.scrollTop() > 100) {
$('.header').addClass('fixed');
console.log('fix header');
}
else {
$('.header').removeClass('fixed');
console.log('unfix header');
}
}
$window.scroll((function() {
var fixed = false, elem;
return function () {
var should_fix = $window.scrollTop() > 100;
elem = elem || $('.header');
if (should_fix !== fixed) {
if (should_fix) {
elem.addClass('fixed');
console.log('fix header');
} else {
elem.removeClass('fixed');
console.log('unfix header');
}
fixed = should_fix;
}
};
}()) // immediate invocation, because it's awesome