我希望我的菜单在点击时显示和隐藏列表项,默认情况下它们是隐藏的。问题是我的菜单是在管理部分生成的,因此如果我在菜单选项中将特定链接的 URL 字段设置为空,它会自动将网站的 url 分配给它。所以当我点击它时,它会重新加载主页。
我想要的是,当我单击任何父 li 时,它应该停止生成默认事件,以便防止默认。但就我而言,它不起作用,它会在显示父项的列表项后重新加载页面。
这是一个 fiddle Fiddle
HTML
<div class="mega-col col-xs-12 col-sm-12 col-md-4" data-type="menu">
<div class="mega-col-inner">
<ul>
<li class="parent dropdown-submenu mega-group"><a class="dropdown-toggle" data-toggle="dropdown" href=""><span class="menu-title">Massachusetts Stores</span><b class="caret"></b></a>
<div class="dropdown-mega level2">
<div class="dropdown-menu-inner">
<div class="row">
<div class="col-sm-12 mega-col" data-colwidth="12" data-type="menu">
<div class="mega-col-inner">
<ul>
<li class=" "><a href="index.php?route=common/location_details&loc_id=24"><span class="menu-title">Burlington Mall, MA</span></a>
</li>
<li class=" "><a href="index.php?route=common/location_details&loc_id=25"><span class="menu-title">Burlington Mall, MA - Cart</span></a>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
</li>
<li class="parent dropdown-submenu mega-group"><a class="dropdown-toggle" data-toggle="dropdown" href=""><span class="menu-title">New Jersey Stores</span><b class="caret"></b></a>
<div class="dropdown-mega level2">
<div class="dropdown-menu-inner">
<div class="row">
<div class="col-sm-12 mega-col" data-colwidth="12" data-type="menu">
<div class="mega-col-inner">
<ul>
<li class=" "><a href="index.php?route=common/location_details&loc_id=26"><span class="menu-title">Brunswick Square Mall, NJ</span></a>
</li>
<li class=" "><a href="index.php?route=common/location_details&loc_id=30"><span class="menu-title">Garden State Plaza, NJ</span></a>
</li>
<li class=" "><a href="index.php?route=common/location_details&loc_id=27"><span class="menu-title">Menlo Park Mall, NJ</span></a>
</li>
<li class=" "><a href="index.php?route=common/location_details&loc_id=29"><span class="menu-title">Ocean County Mall, NJ</span></a>
</li>
<li class=" "><a href=""><span class="menu-title">Rockaway Townsquare, NJ</span></a>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
</li>
<li class="parent dropdown-submenu mega-group"><a class="dropdown-toggle" data-toggle="dropdown" href=""><span class="menu-title">New York Stores</span><b class="caret"></b></a>
<div class="dropdown-mega level2">
<div class="dropdown-menu-inner">
<div class="row">
<div class="col-sm-12 mega-col" data-colwidth="12" data-type="menu">
<div class="mega-col-inner">
<ul>
<li class=" "><a href="index.php?route=common/location_details&loc_id=31"><span class="menu-title">Galleria at White Plains, NY</span></a>
</li>
<li class=" "><a href="index.php?route=common/location_details&loc_id=42"><span class="menu-title">Manhattan, NY-Toys 'R' Us </span></a>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
</li>
<li class="parent dropdown-submenu mega-group"><a class="dropdown-toggle" data-toggle="dropdown" href=""><span class="menu-title">North Carolina Stores</span><b class="caret"></b></a>
<div class="dropdown-mega level2">
<div class="dropdown-menu-inner">
<div class="row">
<div class="col-sm-12 mega-col" data-colwidth="12" data-type="menu">
<div class="mega-col-inner">
<ul>
<li class=" "><a href="index.php?route=common/location_details&loc_id=32"><span class="menu-title">CrabTree Valley, NC</span></a>
</li>
<li class=" "><a href="index.php?route=common/location_details&loc_id=2"><span class="menu-title">Fayetteville, NC</span></a>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
</li>
</ul>
</div>
</div>
JS:
$("#li_menu169 li.parent.dropdown-submenu.mega-group").click(function(event) {
var id = $(this).prop('id');
if (id == 'yes') {
//i want to prevent
} else {
event.preventDefault();
$(this).children('.dropdown-mega.level2').show();
$(this).children('.dropdown-mega.level2').hide();
//redirect
}
});
Css
li.parent.dropdown-submenu.mega-group .dropdown-mega.level2 {
display: none;
}
li
{
padding:10px;
position: relative;
margin:auto;
}
最佳答案
这是一个工作示例:http://jsfiddle.net/hk1w89zw/
不确定您试图通过 id prop
实现什么目标.一般来说,最好设置 onClick
链接上的事件(<a>
-标签)而不是 li
.并使用以下 jQuery 代码:
$("li.parent.dropdown-submenu.mega-group > a").on('click', function(event) {
event.preventDefault();
$('.dropdown-mega.level2').hide();
$(this).closest('.parent').find('.dropdown-mega.level2').show();
});
关于javascript - Jquery event.preventDefault() 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32987084/