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


Posted in jQuery onMarch 29, 2017

本文实例讲述了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 相关文章推荐
jQuery设置图片等比例缩小的方法
Apr 29 jQuery
jquery实现提示语淡入效果
May 05 jQuery
jquery实现图片放大点击切换
Jun 06 jQuery
jQuery复合事件结合toggle()方法的用法示例
Jun 10 jQuery
360提示[高危]使用存在漏洞的JQuery版本的解决方法
Oct 27 jQuery
浅谈ajax在jquery中的请求和servlet中的响应
Jan 22 jQuery
jquery 实现拖动文件上传加载进度条功能
Mar 18 jQuery
基于jQuery实现Ajax验证用户名是否可用实例
Mar 25 jQuery
jQuery实现table表格checkbox全选的方法分析
Jul 04 jQuery
jQuery选择器之层次选择器用法实例分析
Feb 19 jQuery
jQuery实现判断滚动条滚动到document底部的方法分析
Aug 27 jQuery
jquery插件懒加载的示例
Oct 24 jQuery
jQuery实现字体颜色渐变效果的方法
Mar 29 #jQuery
jquery实现tab键进行选择后enter键触发click行为
Mar 29 #jQuery
jQuery插件之validation插件
Mar 29 #jQuery
jquery实现静态搜索功能(可输入搜索文字)
Mar 28 #jQuery
jQuery插件FusionCharts绘制的2D帕累托图效果示例【附demo源码】
Mar 28 #jQuery
BootStrap中jQuery插件Carousel实现轮播广告效果
Mar 27 #jQuery
jQuery中的deferred使用方法
Mar 27 #jQuery
You might like
phpMyAdmin链接MySql错误 个人解决方案
2009/12/28 PHP
PHP中把对象数组转换成普通数组的方法
2015/07/10 PHP
深入理解PHP JSON数组与对象
2016/07/19 PHP
取得一定长度的内容,处理中文
2006/12/20 Javascript
JavaScript 设计模式学习 Factory
2009/07/29 Javascript
fireworks菜单生成器mm_menu.js在 IE 7.0 显示问题的解决方法
2009/10/20 Javascript
ASP 过滤数组重复数据函数(加强版)
2010/05/31 Javascript
javascript框架设计读书笔记之数组的扩展与修复
2014/12/02 Javascript
JS实现控制表格只显示行边框或者只显示列边框的方法
2015/03/31 Javascript
ECMAScript6轮播图实践知识总结
2016/08/17 Javascript
浅谈js内置对象Math的属性和方法(推荐)
2016/09/19 Javascript
JS 在数组指定位置插入/删除数据的方法
2017/01/12 Javascript
Vue.js实现一个漂亮、灵活、可复用的提示组件示例
2017/03/17 Javascript
JavaScript实现的可变动态数字键盘控件方式实例代码
2017/07/15 Javascript
微信小程序 input输入及动态设置按钮的实现
2017/10/27 Javascript
react-native使用leanclound消息推送的方法
2018/08/06 Javascript
vue中的计算属性实例详解
2018/09/19 Javascript
JQuery中queue方法用法示例
2019/01/31 jQuery
微信小程序的开发范式BeautyWe.js入门详解
2019/07/10 Javascript
Vue的click事件防抖和节流处理详解
2019/11/13 Javascript
利用H5api实现时钟的绘制(javascript)
2020/09/13 Javascript
[05:42]DOTA2英雄梦之声_第10期_蝙蝠骑士
2014/06/21 DOTA
Python列表(list)、字典(dict)、字符串(string)基本操作小结
2014/11/28 Python
python获取各操作系统硬件信息的方法
2015/06/03 Python
matplotlib 输出保存指定尺寸的图片方法
2018/05/24 Python
详解python的argpare和click模块小结
2019/03/31 Python
django之导入并执行自定义的函数模块图解
2020/04/01 Python
python logging 重复写日志问题解决办法详解
2020/08/04 Python
python 如何把docker-compose.yaml导入到数据库相关条目里
2021/01/15 Python
专升本自我鉴定
2013/10/10 职场文书
我的网上商城创业计划书
2013/12/26 职场文书
员工培训邀请函
2014/01/11 职场文书
男方父母证婚词
2014/01/12 职场文书
小学班主任经验交流材料
2014/12/16 职场文书
浅谈Python响应式类库RxPy
2021/06/14 Python
vue封装数字翻牌器
2022/04/20 Vue.js