javascript - 自定义侧边栏嵌套菜单。我无法打开嵌套菜单
问题描述
我有以下片段:
$(function() {
$('.menu-open').click(function(e) {
e.preventDefault();
var href = $(this).attr("data-sidebar-toggle");
console.log(href);
href = document.getElementById(href);
console.log(href);
$(href).slideToggle("slow");
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<nav class="nav flex-column">
<a class="nav-link text-light menu-open" href="#" data-sidebar-toggle="#collapseExample"><span>Item 1</span></a>
<div id="#collapseExample" class="sidebar-menu">
<nav class="nav flex-column">
<a class="nav-link text-light menu-open" href="#" data-sidebar-toggle="#item11"><i class="fa fa-user" aria-hidden="true"></i> <span>Item 1-1</span></a>
<div id="item11" class="sidebar-menu">
<nav class="nav flex-column">
<a class="nav-link"> Hello </a>
</nav>
</div>
<a class="nav-link text-light" href="#item-1-2"><span>Item 1-2</span></a>
</nav>
</div>
<a class="nav-link active text-light border-bottom-0 border-light" href="#"><span>Item 2</span></a>
</nav>
但是,当我单击Item 1
侧边栏链接项时,它设法打开和关闭它,而当我单击item1-1
链接时,它无法切换Hello
菜单项,发生这种情况的原因是因为它无法获取具有在data-sidebar-toggle
attr中定义的 id 的元素.
你知道为什么吗?
解决方案
$(function() {
$('.menu-open').click(function(e) {
e.preventDefault();
var href = $(this).attr("data-sidebar-toggle");
console.log(href);
href = document.getElementById(href);
console.log(href);
$(href).slideToggle("slow");
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<nav class="nav flex-column">
<a class="nav-link text-light menu-open" href="#" data-sidebar-toggle="#collapseExample"><span>Item 1</span></a>
<div id="#collapseExample" class="sidebar-menu">
<nav class="nav flex-column">
<a class="nav-link text-light menu-open" href="#" data-sidebar-toggle="#item11"><i class="fa fa-user" aria-hidden="true"></i> <span>Item 1-1</span></a>
<div id="#item11" class="sidebar-menu">
<nav class="nav flex-column">
<a class="nav-link"> Hello </a>
</nav>
</div>
<a class="nav-link text-light" href="#item-1-2"><span>Item 1-2</span></a>
</nav>
</div>
<a class="nav-link active text-light border-bottom-0 border-light" href="#"><span>Item 2</span></a>
</nav>
更新您的代码,如下所示。您#
在 id(item11) 之前错过了。
<a class="nav-link text-light menu-open" href="#" data-sidebar-toggle="#item11"><i class="fa fa-user" aria-hidden="true"></i> <span>Item 1-1</span></a>
<div id="#item11" class="sidebar-menu">
此代码有效。试试这个。
推荐阅读
- maven - 检查器框架无法解析符号
${org.checkerframework:jdk8:jar} 问题 - vim - .vimrc 自动命令在打开新文件时添加文本
- ios - 移动设备管理 iOS
- asp.net - 在 ASP.NET GridView 中搜索标签值
- java - 带有斑马 jar 的应用程序无法在带有 INSTALL_FAILED_NO_MATCHING_ABIS 的非斑马设备上构建
- ios - 当 Appdelegate 中未设置 rootcontroller 时,视图隐藏在状态栏后面
- sql - 使用 OPNQRYF 按字段的子字符串排序
- c - 将 fftw3 与 fftw 复杂类型一起使用
- angularjs - Angularjs如何在没有hash-bang的情况下制作ngRoute
- python - Authlib 0.6+ 不适用于 Auth0 模拟和 Flask