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

响应式导航栏点击锚链接后hamburger事件监听器消失问题如何解决

问题原因

点击汉堡菜单内的锚点链接时,事件冒泡会触发上层元素的绑定事件,打乱原有汉堡菜单的交互逻辑,并非事件监听器真的被移除。你之前调用的event.preventDefault()仅能阻止链接默认跳转行为,无法处理事件冒泡带来的逻辑冲突,因此无法解决问题。

修复代码
document.addEventListener('DOMContentLoaded', function(event) {
    const navLinks = document.querySelector(".nav-ul");
    const hamburgerIcon = document.querySelector("#open-nav");
    const closeIcon = document.querySelector("#close-nav");
    const nav = document.querySelector(".navbar-links");
    // 获取所有导航内锚点链接
    const links = document.querySelectorAll(".navlink");

    hamburgerIcon.addEventListener('click', function() {
        nav.classList.add("open");
        navLinks.style.display = "block";
        hamburgerIcon.style.display = "none";
        closeIcon.style.display = "block";
        // 给所有链接绑定阻止冒泡逻辑
        links.forEach(link => {
            link.addEventListener('click', (event) => {
                event.stopPropagation();
                // 若需要点击链接后自动关闭汉堡菜单,可取消注释下方代码
                /*
                nav.classList.remove("open");
                navLinks.style.display = "none";
                hamburgerIcon.style.display = "block";
                closeIcon.style.display = "none";
                */
            });
        });
    });

    closeIcon.addEventListener('click', function() {
        nav.classList.remove("open");
        navLinks.style.display = "none";
        hamburgerIcon.style.display = "block";
        closeIcon.style.display = "none";
    });
});
补充说明

如果需要优化交互体验,可开启上述代码中的注释逻辑,实现点击锚点链接后自动关闭汉堡菜单的效果,无需用户手动点击关闭按钮。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 11:45:03