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

如何修复响应式折叠菜单中点击无响应的跳转链接问题?

问题根因

原有代码逻辑为视口宽度≤992px时,只要点击了带有.menu-item-has-children类的菜单项,就直接阻止浏览器默认跳转行为,因此顶级链接无法正常跳转;如果删除e.preventDefault(),点击后浏览器会立刻执行跳转动作,子菜单的展开逻辑还未触发就已经离开当前页面,因此子菜单无法弹出。

适配方案

采用移动端导航通用交互逻辑:第一次点击带子菜单的顶级菜单项时,仅弹出子菜单不跳转;第二次点击该顶级菜单项时,正常触发链接跳转。修改后的代码如下:

document.addEventListener("click",function(e){
  const currentMenu = e.target.closest(".menu-item-has-children");
  if (!currentMenu || window.innerWidth > 992) return

  const isSubmenuOpen = currentMenu.dataset.submenuOpen === "true"
  if (isSubmenuOpen) {
    // 子菜单已展开,允许跳转,重置状态标记
    currentMenu.dataset.submenuOpen = "false"
  } else {
    // 子菜单未展开,阻止跳转,标记为已展开,让子菜单弹出逻辑执行
    e.preventDefault()
    currentMenu.dataset.submenuOpen = "true"
    // 可选:重置其他菜单项的状态,避免多个子菜单同时展开
    document.querySelectorAll(".menu-item-has-children").forEach(menu => {
      if (menu !== currentMenu) menu.dataset.submenuOpen = "false"
    })
  }
})

补充说明

如果你的站点已有子菜单关闭逻辑(比如点击页面空白区域关闭子菜单、点击子菜单内的链接关闭父级菜单),需要在对应逻辑中同步将对应顶级菜单项的data-submenu-open属性设置为false,保证交互状态一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 07:06:04