javascript - 滚动上的 jQuery 总是切换到隐藏

标签 javascript jquery

我正在使用这个 jQuery 代码片段在向下滚动时隐藏菜单并在向上滚动时显示:

var prev = 0;
var $window = $(window);
var nav = $('.nav');

$window.on('scroll', function(){
    var scrollTop = $window.scrollTop();
    nav.toggleClass('hidden', scrollTop > prev);
    prev = scrollTop;
});

它按预期工作,但我只希望它在用户向下滚动页面 500 像素后启动。

我已将该函数包装在另一个函数中以实现此结果:

$(window).scroll(function() {
    if ($(this).scrollTop() >= 500) {

        var prev = 0;
        var $window = $(window);
        var nav = $('.nav');

        $window.on('scroll', function(){
            var scrollTop = $window.scrollTop();
            nav.toggleClass('hidden', scrollTop > prev);
            prev = scrollTop;
        });

    }
});

但是,随着这个添加,当向上或向下滚动超过 500 像素时,切换总是恢复为 class=hidden。

最佳答案

你的逻辑不太对。您只需在当前的 scroll 处理程序中添加 if 条件。试试这个:

var prev = 0;
var $window = $(window);
var nav = $('.nav');

$window.on('scroll', function() {
  var scrollTop = $window.scrollTop();
  if ($(this).scrollTop() >= 500) {
    nav.toggleClass('hidden', scrollTop > prev);
  } else {
    nav.addClass('hidden');
  }
  prev = scrollTop; 
});

请注意添加 else 以应对由于渲染器无法跟上滚动速度而导致值跳跃的情况。

关于javascript - 滚动上的 jQuery 总是切换到隐藏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49897355/

相关文章:

javascript - 如何处理两个函数

javascript - 加载新网址时如何保留书签?

javascript - 每个 block 传递多个参数 Handlebars

javascript - 为什么 x[function() {}] 有效?

javascript - 使用 getElementById 填充页面上的元素

jquery - HTML/CSS - 位于元素顶部的动画背景

javascript - 弹出窗口 react 不够灵敏

php - MySQL AJAX PHP 通知表布局

php - Facebook 应用程序 - 如何计算发件人邀请的好友数量?

jquery - 基本的 jquery slider 图像大小不可调整