You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

jQuery实现滚动显示隐藏元素时顶部闪现隐藏问题如何解决

问题原因
  • 你在scrollTop>0分支中设置的300毫秒延迟定时器没有做清除处理,只要你在触发向下滚动后的300毫秒内滚动回页面顶部,这个延迟执行的$('.second').hide()逻辑依然会运行,哪怕此时已经触发了scrollTop=0对应的显示逻辑,最终就会出现元素先显示、随后立刻被隐藏的异常。
  • 你设置的元素过渡动画时长和定时器时长一致,进一步提升了这个问题的触发概率。
修复方案

定义一个变量存储定时器ID,每次触发滚动事件时先清除之前的定时器,避免残留的延迟逻辑执行即可解决问题。

修复后的完整JS代码

let scrollTimer = null;
$(window).on('scroll', function() {
    // 每次滚动先清除之前的延迟任务
    clearTimeout(scrollTimer);
    if ($(window).scrollTop() > 0) {
        $('.element').addClass('scroll');
        scrollTimer = setTimeout(function() {
            $('.second').hide();
        },300);
    } else {
        $('.second').show();
        $('.element').removeClass('scroll');
    }
    console.log($(window).scrollTop());
});

内容的提问来源于stack exchange,提问作者user1391152

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.13 15:06:02