如何停止 e.prevent默认在创建响应式多级菜单时禁用子链接
How to stop e.preventDefault disabling child links when creating responsive multi-level menu
我正在尝试创建一个响应式多级菜单,标记采用以下形式:
<div id="navigation">
<a href="#" id="toggleNav">Menu <i class="fa fa-angle-down"></i></a>
<ul class="nav" id="nav">
<li><a href="/home/" class="">Home</a></li>
<li class="has-subnav"><a href="/shop/" class="active ">Shop</a>
<ul class="">
<li class="nodesktop"><a href="/shop/" class="">Overview</a></li>
<li><a href="/shop/cleanser/" class="">Cleansers</a></li>
<li><a href="/shop/moisturiser/" class="">Moisturisers</a></li>
<li><a href="/shop/treatment/" class="">Serums & Treatments</a></li>
</ul>
</li>
</ul>
</div>
我遇到的问题是,因为我的子导航链接有一个页面网址,所以我使用 e.preventDefault 来防止链接被跟踪,并显示我的子导航,然后也会禁用子链接,所以菜单不起作用。有人对此有解决方案吗?
$(function () {
var $toggleNav = $('#toggleNav'),
$nav = $('#nav'),
$hasSubnav = $nav.find('> .has-subnav'),
$window = $(window),
windowWidth = $window.width();
$toggleNav.on('click', function (e) {
e.preventDefault();
$nav.toggleClass('visible');
});
$hasSubnav.on('click', function (event) {
event.preventDefault();
$(this).find('ul').toggleClass('show-subnav');
});
});
好吧,您可能必须阻止事件,而不是在整个<li>
保持ul
下降,而仅在<a>
上。所以,你的js应该看起来像这样:
$(function () {
var $toggleNav = $('#toggleNav'),
$nav = $('#nav'),
$hasSubnav = $nav.find('.has-subnav > a'),
$window = $(window),
windowWidth = $window.width();
$toggleNav.on('click', function (e) {
e.preventDefault();
$nav.toggleClass('visible');
});
$hasSubnav.on('click', function (event) {
event.preventDefault();
$(this).parent().find('ul').toggleClass('show-subnav');
});
});
演示
相关文章:
- jQuery-适用于移动设备的多级菜单
- 可替代多级上下文菜单
- slideDown菜单-添加更多级别的问题
- 悬停样式应该在动态加载多级菜单时保持单击状态
- 多级手风琴式导航菜单
- 如何在不插入整个代码的情况下嵌入现有的多级下拉菜单
- 如果菜单处于活动状态或非活动状态,则切换图标的类.多级按钮菜单
- 使用 jquery 的多级下拉菜单
- 记住菜单状态垂直多级导航
- 多级响应菜单..移动和非移动之间的转换
- 多级菜单的角度指令
- 常见问题解答的多级菜单
- 多级可折叠引导侧导航菜单出现问题
- 从一页到另一页的多级推送菜单状态
- Javascript多级下拉菜单
- 如何添加多级菜单
- 如何停止 e.prevent默认在创建响应式多级菜单时禁用子链接
- 使“多级推送”菜单在IE中工作
- 如何从字符串创建多级列表菜单
- 尝试从实现多级推送菜单http://multi-level-push-menu.make.rs在网站上