我正在尝试使用jquery幻灯片菜单,但我现在没有想法。如何在子菜单条目上进行切换时如何停止菜单折叠?
这是我到目前为止所获得的 - js-part,导航代码,以及最后相关的css部分:
<script type="text/javascript">
$(document).ready(function() {
$('ul .sub').hide();
$("li:has(.sub)").click(function() {
$("ul", this).toggle('slow');
});
</script>
<nav id="nav" class="nav">
<ul>
<li class="current"><a href="#a">menu1</a></li>
<li><a href="#b">menu2</a>
<ul class="sub">
<li><a href="#ba">sub2a</a></li>
<li><a href="#bb">sub2b</a></li>
<li><a href="#bc">sub2c</a></li>
</ul>
</li>
<li><a href="#c">menu3</a></li>
<li><a href="#d">menu4</a>
<ul class="sub">
<li><a href="#da">sub4a/a></li>
<li><a href="#db">sub4b</a></li>
</ul>
</li>
</ul>
</nav>
这是css:
.nav li {
list-style:none;
line-height: 30px;
}
.nav a:link, .nav a:visited{
color:#333 !important;
text-decoration:none;
}
.nav a:hover {
color:#9bb710;
text-decoration:none;
}
.current a:link, .current a:hover, .current a:visited {
color:#9bb710 !important;
}
.sub {
color:#333 !important;
text-decoration:none;
font-size: 14px;
margin-left: 15px;
line-height: 22px;
}
答案 0 :(得分:2)
由于事件传播而发生这种情况:当您点击子项目时,“点击”事件会传播到容器“li”。
您可以通过添加以下内容来阻止此操作:
$("li").click(function(event) {
event.stopPropagation();
});
这是一个jsfiddle示例:http://jsfiddle.net/EWXPy/
答案 1 :(得分:1)
您忘记了脚本中的右括号:
必须是这样的:
<script type="text/javascript">
$(document).ready(function() {
$('ul .sub').hide();
$("li:has(.sub)").click(function() {
$("ul", this).toggle('slow');
});
});
</script>
答案 2 :(得分:0)
$("li:has(.sub)").click(function(e) {
if ($(e.target).parents('.sub').length) return false;
$("ul", this).toggle('slow');
});