javascript - 移动设备上的多级手风琴导航
问题描述
我是 Jquery 开发的新手,我正在创建一个基于 HTML 结构的手风琴菜单,但手风琴仅适用于 1 级导航,不适用于所有导航。
<div id="hs_menu_wrapper_module_xxxxxxxxxxxxxx_" class="hs-menu-wrapper active-branch flyouts hs-menu-flow-horizontal" role="navigation" data-sitemap-name="default" data-menu-id="44326912014" aria-label="Navigation Menu" style="display: block;">
<ul>
<li class="hs-menu-item hs-menu-depth-1"><a href="javascript:;" role="menuitem">Menu item </a></li>
<li class="hs-menu-item hs-menu-depth-1 hs-item-has-children" role="menu"><a href="javascript:;" aria-haspopup="true" aria-expanded="false" role="menuitem">Menu item </a> <div class="child-trigger"><i></i></div>
<ul class="hs-menu-children-wrapper" style="">
<li class="hs-menu-item hs-menu-depth-2" role="menuitem"><a href="javascript:;" role="menuitem">Menu item </a></li>
<li class="hs-menu-item hs-menu-depth-2" role="menuitem"><a href="javascript:;" role="menuitem">Menu item </a></li>
<li class="hs-menu-item hs-menu-depth-2" role="menuitem"><a href="javascript:;" role="menuitem">Menu item </a></li>
<li class="hs-menu-item hs-menu-depth-2" role="menuitem"><a href="javascript:;" role="menuitem">Menu item </a></li>
<li class="hs-menu-item hs-menu-depth-2" role="menuitem"><a href="javascript:;" role="menuitem">Menu item </a></li>
<li class="hs-menu-item hs-menu-depth-2" role="menuitem"><a href="javascript:;" role="menuitem">Menu item </a></li>
</ul></li>
<li class="hs-menu-item hs-menu-depth-1 hs-item-has-children" role="menu"><a href="javascript:;" aria-haspopup="true" aria-expanded="false" role="menuitem">Our Services</a> <div class="child-trigger"><i></i></div>
<ul class="hs-menu-children-wrapper" style="">
<li class="hs-menu-item hs-menu-depth-2 hs-item-has-children" role="menuitem"><a href="javascript:;" role="menuitem">Menu item </a> <div class="child-trigger"><i></i></div>
<ul class="hs-menu-children-wrapper" style="">
<li class="hs-menu-item hs-menu-depth-3" role="menuitem"><a href="javascript:;" role="menuitem">Menu item </a></li>
<li class="hs-menu-item hs-menu-depth-3" role="menuitem"><a href="javascript:;" role="menuitem">Menu item </a></li>
<li class="hs-menu-item hs-menu-depth-3" role="menuitem"><a href="javascript:;" role="menuitem">Menu item </a></li>
<li class="hs-menu-item hs-menu-depth-3" role="menuitem"><a href="javascript:;" role="menuitem">Menu item </a></li>
<li class="hs-menu-item hs-menu-depth-3" role="menuitem"><a href="javascript:;" role="menuitem">Menu item </a></li>
</ul></li>
<li class="hs-menu-item hs-menu-depth-2 hs-item-has-children" role="menuitem"><a href="javascript:;" role="menuitem">Menu item </a> <div class="child-trigger"><i></i></div>Menu item Menu item
<ul class="hs-menu-children-wrapper" style="">
<li class="hs-menu-item hs-menu-depth-3" role="menuitem"><a href="javascript:;" role="menuitem">Menu item Menu item </a></li>
<li class="hs-menu-item hs-menu-depth-3" role="menuitem"><a href="javascript:;" role="menuitem">Menu item Menu item </a></li>
<li class="hs-menu-item hs-menu-depth-3" role="menuitem"><a href="javascript:;" role="menuitem">Menu item Menu item </a></li>
<li class="hs-menu-item hs-menu-depth-3" role="menuitem"><a href="javascript:;" role="menuitem">Menu item Menu item </a></li>
<li class="hs-menu-item hs-menu-depth-3" role="menuitem"><a href="javascript:;" role="menuitem">Menu item Menu item </a></li>
</ul></li>
<li class="hs-menu-item hs-menu-depth-2 hs-item-has-children" role="menuitem"><a href="javascript:;" role="menuitem">Menu item Menu item </a> <div class="child-trigger"><i></i></div>
<ul class="hs-menu-children-wrapper" style="">
<li class="hs-menu-item hs-menu-depth-3" role="menuitem"><a href="javascript:;" role="menuitem">Menu item Menu item </a></li>
<li class="hs-menu-item hs-menu-depth-3" role="menuitem"><a href="javascript:;" role="menuitem">Menu item Menu item </a></li>
<li class="hs-menu-item hs-menu-depth-3" role="menuitem"><a href="javascript:;" role="menuitem">Menu item Menu item </a></li>
</ul></li>
<li class="hs-menu-item hs-menu-depth-2 hs-item-has-children" role="menuitem"><a href="javascript:;" role="menuitem">Menu item Menu item </a> <div class="child-trigger"><i></i></div>
<ul class="hs-menu-children-wrapper" style="">
<li class="hs-menu-item hs-menu-depth-3" role="menuitem"><a href="javascript:;" role="menuitem">Menu item Menu item </a></li>
<li class="hs-menu-item hs-menu-depth-3" role="menuitem"><a href="javascript:;" role="menuitem">Menu item Menu item </a></li>
<li class="hs-menu-item hs-menu-depth-3" role="menuitem"><a href="javascript:;" role="menuitem">Menu item Menu item </a></li>
</ul></li>
<li class="hs-menu-item hs-menu-depth-2 hs-item-has-children" role="menuitem"><a href="javascript:;" role="menuitem">Menu item Menu item </a> <div class="child-trigger"><i></i></div>
<ul class="hs-menu-children-wrapper" style="">
<li class="hs-menu-item hs-menu-depth-3" role="menuitem"><a href="javascript:;" role="menuitem">Menu item </a></li>
<li class="hs-menu-item hs-menu-depth-3" role="menuitem"><a href="javascript:;" role="menuitem">Menu item </a></li>
<li class="hs-menu-item hs-menu-depth-3" role="menuitem"><a href="javascript:;" role="menuitem">Menu item </a></li>
<li class="hs-menu-item hs-menu-depth-3" role="menuitem"><a href="javascript:;" role="menuitem">Menu item </a></li>
<li class="hs-menu-item hs-menu-depth-3" role="menuitem"><a href="javascript:;" role="menuitem">Menu item </a></li>
</ul></li>
<li class="hs-menu-item hs-menu-depth-2 hs-item-has-children" role="menuitem"><a href="javascript:;" role="menuitem">Menu item </a> <div class="child-trigger"><i></i></div>
<ul class="hs-menu-children-wrapper" style="">
<li class="hs-menu-item hs-menu-depth-3" role="menuitem"><a href="javascript:;" role="menuitem">Menu item </a></li>
<li class="hs-menu-item hs-menu-depth-3" role="menuitem"><a href="javascript:;" role="menuitem">Menu item </a></li>
</ul></li>
</ul></li>
<li class="hs-menu-item hs-menu-depth-1 hs-item-has-children" role="menu"><a href="javascript:;" aria-haspopup="true" aria-expanded="false" role="menuitem">Resources</a> <div class="child-trigger"><i></i></div>
<ul class="hs-menu-children-wrapper" style="">
<li class="hs-menu-item hs-menu-depth-2" role="menuitem"><a href="javascript:;" role="menuitem">Menu item </a></li>
<li class="hs-menu-item hs-menu-depth-2" role="menuitem"><a href="javascript:;" role="menuitem">Menu item </a></li>
<li class="hs-menu-item hs-menu-depth-2" role="menuitem"><a href="javascript:;" role="menuitem">Menu item </a></li>
<li class="hs-menu-item hs-menu-depth-2" role="menuitem"><a href="javascript:;" role="menuitem">Menu item </a></li>
<li class="hs-menu-item hs-menu-depth-2" role="menuitem"><a href="javascript:;" role="menuitem">Menu item </a></li>
<li class="hs-menu-item hs-menu-depth-2" role="menuitem"><a href="javascript:;" role="menuitem">Menu item </a></li>
</ul></li>
<li class="hs-menu-item hs-menu-depth-1"><a href="javascript:;" role="menuitem">Menu item </a></li>
<li class="hs-menu-item hs-menu-depth-1"><a href="javascript:;" role="menuitem">Menu item </a></li>
<li class="hs-menu-item hs-menu-depth-1 hs-item-has-children" role="menu"><a href="javascript:;" aria-haspopup="true" aria-expanded="false" role="menuitem">Menu item </a> <div class="child-trigger"><i></i></div>
<ul class="hs-menu-children-wrapper" style="">
<li class="hs-menu-item hs-menu-depth-2" role="menuitem"><a href="javascript:;" role="menuitem">Menu item </a></li>
<li class="hs-menu-item hs-menu-depth-2" role="menuitem"><a href="javascript:;" role="menuitem">Menu item </a></li>
<li class="hs-menu-item hs-menu-depth-2" role="menuitem"><a href="javascript:;" role="menuitem">Menu item </a></li>
<li class="hs-menu-item hs-menu-depth-2" role="menuitem"><a href="javascript:;" role="menuitem">Menu item </a></li>
<li class="hs-menu-item hs-menu-depth-2" role="menuitem"><a href="javascript:;" role="menuitem">Menu item </a></li>
</ul></li>
</ul>
</div>
这是导航的 HTML,以及手机上手风琴导航的默认 Jquery 脚本
$('.custom-menu-primary').addClass('js-enabled');
/* Mobile button with three lines icon */
$('.custom-menu-primary .hs-menu-wrapper').before('<div class="mobile-trigger"><i></i></div>');
/* Uncomment for mobile button that says 'MENU'
$('.custom-menu-primary .hs-menu-wrapper').before('<div class="mobile-trigger">MENU</div>');
*/
$('.custom-menu-primary .flyouts .hs-item-has-children > a').after(' <div class="child-trigger"><i></i></div>');
$('.mobile-trigger').click(function() {
$(this).next('.custom-menu-primary .hs-menu-wrapper').slideToggle(250);
$('body').toggleClass('mobile-open');
$('.child-trigger').removeClass('child-open');
$('.hs-menu-children-wrapper').slideUp(250);
return false;
});
$('.child-trigger').click(function() {
$(this).parent().siblings('.hs-item-has-children').find('.child-trigger').removeClass('child-open');
$(this).parent().siblings('.hs-item-has-children').find('.hs-menu-children-wrapper').slideUp(250);
$(this).next('.hs-menu-children-wrapper').slideToggle(250);
$(this).next('.hs-menu-children-wrapper').children('.hs-item-has-children').find('.hs-menu-children-wrapper').slideUp(250);
$(this).next('.hs-menu-children-wrapper').children('.hs-item-has-children').find('.child-trigger').removeClass('child-open');
$(this).toggleClass('child-open');
return false;
});
但这也无法正常工作,因为加号图标仅在单击 1 级导航项时才起作用,那么只有它会打开也正在双击的手风琴。
解决方案
推荐阅读
- reactjs - For Loop 在 React 中没有显示正确的结果
- d3.js - 如何将“Y”比例数据与“X”比例域匹配
- node.js - 使用 Google Cloud Storage 将音频文件从 Google Text-to-Speech 保存到 Firebase Storage?
- visual-studio-2010 - VS2008/VS2010 和 TFS 2018:用户名 [ID] 不是完全限定的用户名。参数名称:workspaceOwner
- reactjs - 设置和镜像 2 个 React.js 组件的最简单方法是什么
- math - 如何用二进制补码固定点添加固定点?
- javascript - 将数据表导出到 Excel 无法打开文件
- c - 如何为矩阵中的特定元素动态分配内存?
- c++ - 在项目中移动文件,现在我找不到命名空间
- metpy - 给定点的 Metpy 插值