如何用 jquery 改进这个侧边菜单示例?
我有简单的侧面菜单,其中包含以下 html 代码:
<div id="menu">
<div>
Menu Title
</div>
<ul class="menu">
<li>
<span>
first item
</span>
<ul>
<li>
sub item
</li>
<li>
sub item
</li>
<li>
sub item
</li>
</ul>
</li>
<li>
<span>
second item
</span>
<ul>
<li>sub menu</li>
<li>sub menu</li>
</ul>
</li>
<li>
<span>
third item
</span>
<ul>
<li>
sub menu
</li>
<li>
sub menu
</li>
</ul>
</li>
</ul>
</div>
css 是:
#menu{
text-align:center;
font-size:13px;
font-family:tahoma;
color:#0000AA;
padding:2px 0;}
#menu div{
color:#0000AA;}
#menu ul{
text-align:right;
background-color: #FFFFFF;
list-style-type: none;
margin: 0px;
padding: 0px;}
#menu ul li{
display:block;
margin: 3px 2px;
cursor:hand;
cursor:pointer;}
#menu ul li span{
width:100%;
display:block;
background-color:#DDDDFF;}
#menu ul li span:hover{
background-color:#9999EE;}
#menu ul li ul{
display:none;}
#menu ul li ul li{
background-color:#EEEEEE;
margin:2px;
display: block;}
#menu ul li ul li:hover{
background-color:#FFFFFF;}
.submenu{
background-color: #CCCCFF;}
jquery 代码是:
$(window).load(function(){
$(".submenu").children(this).slideUp("slow");
});
$(document).ready(function(){
$('ul.menu li span').click(function(){
$("ul.menu li").find('ul').slideUp('fast');
$(this).parent(this).find('ul').slideDown('fast');
});
});
我的 complate 菜单位于 http://jsfiddle.net/parseha/NkuG5/3/ 这个问题是:当点击第一个项目时,子菜单向上滑动然后向下滑动,我想不要这样运行。
请原谅我的这段文字和内容中的错误。 谢谢。
i have simple side menu with this html code :
<div id="menu">
<div>
Menu Title
</div>
<ul class="menu">
<li>
<span>
first item
</span>
<ul>
<li>
sub item
</li>
<li>
sub item
</li>
<li>
sub item
</li>
</ul>
</li>
<li>
<span>
second item
</span>
<ul>
<li>sub menu</li>
<li>sub menu</li>
</ul>
</li>
<li>
<span>
third item
</span>
<ul>
<li>
sub menu
</li>
<li>
sub menu
</li>
</ul>
</li>
</ul>
</div>
and css is :
#menu{
text-align:center;
font-size:13px;
font-family:tahoma;
color:#0000AA;
padding:2px 0;}
#menu div{
color:#0000AA;}
#menu ul{
text-align:right;
background-color: #FFFFFF;
list-style-type: none;
margin: 0px;
padding: 0px;}
#menu ul li{
display:block;
margin: 3px 2px;
cursor:hand;
cursor:pointer;}
#menu ul li span{
width:100%;
display:block;
background-color:#DDDDFF;}
#menu ul li span:hover{
background-color:#9999EE;}
#menu ul li ul{
display:none;}
#menu ul li ul li{
background-color:#EEEEEE;
margin:2px;
display: block;}
#menu ul li ul li:hover{
background-color:#FFFFFF;}
.submenu{
background-color: #CCCCFF;}
and jquery code is :
$(window).load(function(){
$(".submenu").children(this).slideUp("slow");
});
$(document).ready(function(){
$('ul.menu li span').click(function(){
$("ul.menu li").find('ul').slideUp('fast');
$(this).parent(this).find('ul').slideDown('fast');
});
});
and my complate menu locate in http://jsfiddle.net/parseha/NkuG5/3/
this problem is : when clicking first item , sub menus sliding up and then sliding down , i want do not this run .
excuse me for this text and my mistake in content.
thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
使用“siblings”选择器,slideToggle() 将根据 DOM 的当前状态显示或隐藏 DOM。
Use the "siblings" selector and slideToggle() will show or hide the DOM based on it's current state.
诀窍是跟踪哪个菜单已展开,并根据其状态(展开或折叠)确定要采取的操作(向上滑动或向下滑动)。
您可以通过在菜单项展开时向菜单项添加一个类并在菜单项折叠时删除该类来实现此目的。该类的存在将指示菜单是展开还是折叠。
Jquery代码:
演示
The trick is to keep a track of which menu is expanded, and depending on its state (expanded or collapsed) determine what action to take (slide up or slide down).
You can achieve this by adding a class to the menu item when it is expanded, and remove that class when it is collapsed. Existence of that class will indicate whether the menu is expanded or collapsed.
Jquery code:
Demo