欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

jQuery实现的手风琴侧边菜单效果

程序员文章站 2023-11-12 08:15:04
本文实例讲述了jquery实现的手风琴侧边菜单效果。分享给大家供大家参考,具体如下: 动手做了一个简单手风琴菜单,上图: 点击 b 可收缩 c 列表,点击 c 改变...

本文实例讲述了jquery实现的手风琴侧边菜单效果。分享给大家供大家参考,具体如下:

动手做了一个简单手风琴菜单,上图:

jQuery实现的手风琴侧边菜单效果

点击 b 可收缩 c 列表,点击 c 改变自身和父节点 b 的样式,悬浮时均有不同的样式改变。

先看页面代码,列表的嵌套:

<div id="menudiv">
<ul id="menu">
<li class="parentli">
<span>b</span>
<ul class="childrenul">
<li class="childrenli"><span>c</span></li>
<li class="childrenli"><span>c</span></li>
<li class="childrenli"><span>c</span></li>
</ul>
</li>
<li class="parentli">
<span>b</span>
<ul class="childrenul">
<li class="childrenli"><span>c</span></li>
<li class="childrenli"><span>c</span></li>
<li class="childrenli"><span>c</span></li>
</ul>
</li>
<li class="parentli">
<span>b</span>
<ul class="childrenul">
<li class="childrenli"><span>c</span></li>
<li class="childrenli"><span>c</span></li>
<li class="childrenli"><span>c</span></li>
</ul>
</li>
</ul>
</div>

css 代码,主要设置背景色和子菜单左边框的样式,设置悬浮和选中的样式,开始设置子菜单不显示(通过 js 设置点击之后再显示):

#menudiv{
  width: 200px;
  background-color: #029fd4;
}
.parentli
{
  width: 100%;
  line-height: 40px;
  margin-top: 1px;
  background: #1c73ba;
  color: #fff;
  cursor: pointer;
  font-weight:bolder;
}
.parentli span
{
  padding: 10px;
}
.parentli:hover, .selectedparentmenu
{
  background: #0033cc;
}
.childrenul
{
  background-color: #ffffff;
  display: none;
}
.childrenli
{
  width: 100%;
  line-height: 30px;
  font-size: .9em;
  margin-top: 1px;
  background: #63b8ff;
  color: #000000;
  padding-left: 15px;
  cursor: pointer;
}
.childrenli:hover, .selectedchildrenmenu
{
  border-left: 5px #0033cc solid;
  background: #0099cc;
  padding-left: 15px;
}

接下来就是点击事件的代码:

$(".parentli").click(function(event) {
    $(this).children('.childrenul').slidetoggle();
});
$(".childrenli").click(function(event) {
    event.stoppropagation();
    $(".childrenli").removeclass('selectedchildrenmenu');
    $(".parentli").removeclass('selectedparentmenu');
    $(this).parents(".parentli").addclass('selectedparentmenu');
    $(this).addclass('selectedchildrenmenu');
});

需要注意的是列表嵌套,会导致事件冒泡,所以在子菜单的点击事件里面要组织冒泡,event.stoppropagation(); 详见 api

更多关于jquery相关内容感兴趣的读者可查看本站专题:《jquery表格(table)操作技巧汇总》、《jquery切换特效与技巧总结》、《jquery扩展技巧总结》、《jquery常用插件及用法总结》、《jquery拖拽特效与技巧总结》、《jquery中ajax用法总结》、《jquery常见经典特效汇总》、《jquery动画与特效用法总结》及《jquery选择器用法总结

希望本文所述对大家jquery程序设计有所帮助。