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

点击#menu-icon后.nav的.open类样式不生效,寻求jQuery替代方案

导航栏.toggle类样式不生效问题修复及jQuery实现

问题背景

点击#menu-icon后,.nav元素的.open类已在开发者工具Elements面板中显示,但样式未生效。使用Bootstrap构建导航栏,期望通过添加.open类时设置left:0实现导航栏的显示/隐藏,需用jQuery替代原生JavaScript实现功能。

问题原因

  1. CSS选择器错误:.nav .open表示选择.nav内部的.open元素,而实际是.nav自身添加.open类,正确选择器应为.nav.open。
  2. 未设置导航栏初始隐藏状态:.nav没有默认的left值,导致切换left:0时无视觉变化。

修复方案

1. 修正CSS代码

调整选择器并添加初始隐藏状态:

.nav {
    position: absolute;
    z-index: 10001;
    top: 65px;
    right: 30px;
    width: 270px;
    background-color: #f3efef;
    display: flex;
    flex-direction: column;
    justify-content: flex-start;
    border-radius: 4px;
    transition: all .50s ease;
    font-size: 14px;
    left: -300px; /* 添加初始隐藏位置 */
}

.nav-item {
    margin-top: -2px;
    border-radius: 4px;
}

#menu-icon {
    display: block;
}

/* 修正选择器,选择带有.open类的.nav元素 */
.nav.open {
    left: 0;
}

2. 替换为jQuery代码

确保页面已引入jQuery库,然后添加以下代码:

$(document).ready(function() {
    $('#menu-icon').click(function() {
        $('.nav').toggleClass('open');
    });
});

3. 可选:修正HTML中的小问题

注意nav-link中的.bg-white多了个点,应该改为bg-white:

<!-- logo -->
<div class="logo">
    <img src="assets/logo.png" alt="logo g's shop">
</div>
<i class="ri-menu-line" id="menu-icon"></i>

<!-- nav -->
<ul class="nav nav-pills nav-fill m4">
  <li class="nav-item">
    <a class="nav-link active bg-white" aria-current="page" href="#">ALL ITEM</a>
  </li>
  <li class="nav-item">
    <a class="nav-link" href="#">SMARTPHONES</a>
  </li>
  <li class="nav-item">
    <a class="nav-link" href="#">LAPTOPS</a>
  </li>
</ul>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 23:17:47