javascript - 需要使用 Vanilla Javascript 隐藏/显示子菜单
问题描述
我有一个带有子菜单的列表项菜单,我需要在父点击时显示/隐藏。我在我网站的其他区域有这个工作,但我在选择这个元素以使其工作时遇到问题。
click 元素也是我需要防止默认或禁用的链接,以便子菜单显示。
我需要能够点击父链接来隐藏/显示子菜单
谢谢你。
HTML:
<ul id="main-menu" class="main-nav-list uppercase">
<li class="menu-item menu-item-type-post_type menu-item-object-page current-menu-item page_item page-item-16 current_page_item current-menu-ancestor current-menu-parent current_page_parent current_page_ancestor menu-item-has-children menu-item-4356">
<a href="//localhost:3000/about/" aria-current="page">About</a>
<ul class="sub-menu">
<li class="menu-item menu-item-type-post_type menu-item-object-page current-menu-item page_item page-item-16 current_page_item menu-item-4420"><a href="//localhost:3000/about/" aria-current="page">About</a></li>
<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-4421"><a href="//localhost:3000/about/management/">Leadership</a></li>
</ul>
</li>
</ul>
Javascript:
var mobileSub = document.querySelectorAll("menu-item a");
var i;
for (i = 0; i < mobileSub.length; i++) {
mobileSub[i].addEventListener("mouseenter", function() {
this.classList.toggle("active");
var panel = this.nextElementSibling;
if (panel.style.maxHeight){
panel.style.maxHeight = null;
} else {
panel.style.maxHeight = panel.scrollHeight + "px";
}
});
}
解决方案
我认为您的 javascript 代码不会影响您的问题。答案将是这样的:
document.querySelectorAll('.menu-item').forEach((it) => {
it.addEventListener('click', (ev) => {
ev.preventDefault();
it.querySelector('.sub-menu').classList.toggle('hidden');
});
});
推荐阅读
- azure - 能否在 .NET Framework 上构建 MS Teams 机器人并将其部署到 Service Fabric 群集?
- flutter - Flutter Web Image Picker 和上传图片到 Firebase
- python - 调整 gridspec 以使绘制的数据对齐
- node.js - node-quickbooks 重新连接方法不再给出预期的响应
- python - 从字典列表中提取键和多个值的 Pythonic 方法
- python - Python:创建自定义包;错误:未定义名称“请求”(尽管已导入)
- spring - Spring Cloud Gateway 没有路由(只有 404)
- c++ - 我应该如何在不使用数组的情况下使我的 C++ 代码更短?
- cloud - SIM800A 与 Cloudmqtt 连接超时
- linq - Linq 按计数条件分组