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

jQuery实现响应式汉堡菜单点击无法开合?750px断点下导航功能失效求助

故障点定位
  • jQuery 选择器语法错误:原代码使用$("menu-toggle")匹配元素,这是在查找标签名为menu-toggle的DOM节点,实际汉堡按钮是携带menu-toggle类的<i>标签,缺少类选择器的.前缀,导致点击事件根本没有绑定到按钮上。
  • 无效DOM选择:原代码中$('nav').toggleClass('showing')逻辑无任何作用,因为HTML结构内不存在<nav>标签,主导航容器是class为nav的<ul>元素,选择器完全失配。
  • CSS权重不匹配:媒体查询内定义的.showing { max-height: 100em; }权重低于同规则下的header ul { max-height: 0px; },就算showing类被加上,max-height属性也会被高权重的折叠规则覆盖,菜单无法展开。
  • 类切换目标错配:原代码中给$('.nav ul')添加showing类,该选择器匹配的是.nav内部嵌套的用户下拉子菜单,并非需要控制开合的外层主导航<ul>。
修正后可正常运行的代码

调整后的jQuery交互逻辑

$(document).ready(function() {
  // 修正类选择器,绑定正确的按钮元素
  $(".menu-toggle").on("click", function() {
    // 直接给外层主导航容器切换showing类
    $('.nav').toggleClass('showing');
  });
});

调整后的CSS样式规则

header .menu-toggle {
  display: none;
}


/***** 媒体查询规则 *****/
@media only screen and (max-width: 750px) {
  header {
    position: relative;
  }
  header ul.nav {
    width: 100%;
    background: #666666;
    max-height: 0px;
    overflow: hidden;
    transition: max-height 0.3s ease;
  }
  /* 提高选择器权重,保证展开状态能覆盖默认折叠值 */
  header ul.nav.showing {
    max-height: 100em;
  }
  header ul li {
    width: 100%;
  }
  header ul li ul {
    position: static;
    display: block;
    width: 100%;
  }
  header ul li ul li a {
    padding: 10px;
    background: #666666;
    color: #ffffff;
    padding-left: 50px;
  }
  header ul li ul li a.logout {
    color: #ff0000;
  }
  header .menu-toggle {
    display: block;
    position: absolute;
    right: 20px;
    top: 20px;
    font-size: 1.9em;
    cursor: pointer;
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.22 17:36:09