Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery窗口滚动在用户滚动时停止触发_Javascript_Jquery_Performance - Fatal编程技术网

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