【发布时间】:2014-10-14 23:05:15
【问题描述】:
我一直在尝试获得一个简单的垂直导航,以便在单击时显示列表项的子项。
但是,当您随后单击任何嵌套的子列表项时,您实际上是在再次“单击”父列表项。这会触发我的点击功能以删除“.active”并在用户被重定向到他们选择的页面之前关闭父列表项。这看起来很糟糕,而且非常烦人。
关于如何获得不影响子列表项的点击功能有什么建议吗?
$('#sidebar > li.parent').click(function(){
if($(this).hasClass('active')){
$(this).removeClass('active');
}else{
$(this).addClass('active');
}
});
HTML
<aside id="tertiary" class="tertiary">
<ul id="sidebar" class="sidebar">
<li class="active"><a href="/">Portal</a></li>
<li><a href="ecards.html">Start Here</a></li>
<li><a href="ecards.html">Cards</a></li>
<li class="parent"><a href="programs.html">Programs</a>
<ul>
<li><a href="#">LOS</a></li>
<li><a href="#">Safety</a></li>
<li><a href="#">Retirement</a></li>
<li><a href="#">Wellness</a></li>
<li><a href="#">Investors</a></li>
</ul>
</li>
<li><a href="#">Marketplace</a></li>
<li><a href="#">Reporting</a></li>
</ul>
</aside>
【问题讨论】:
-
添加
return false或使用.stopPropagation()并将其绑定到孩子。 -
@j08691:
return false也会阻止链接工作。 -
@TrueBlueAussie - 您确实看到子链接只是
#? -
@j08691:是的......你会阻止那些
bookmark链接工作:)
标签: javascript jquery html css