分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 网页技术

使用jQuery开发accordion手风琴插件

发布时间:2023-09-06 01:23责任编辑:彭小芳关键词:jQuery

一、插件效果

手风琴插件常用的功能均已实现,包括:手风琴菜单项的折叠展开效果、选中指定菜单项、判断菜单项是否选中等。

效果如下:

  

二、插件内部HTML元素结构

 1 <!-- accordioon组件 --> 2 <ul class="accordion"> 3 ????<li accordion-id="menu1" class="active">插件使用</li> 4 ????<li> 5 ????????<ul> 6 ????????????<li><a href="javascript:;">选项卡插件</a></li> 7 ????????????<li><a href="javascript:;">手风琴插件</a></li> 8 ????????</ul> 9 ????</li>10 ????<li accordion-id="menu2">管理员管理</li>11 ????<li>12 ????????<ul>13 ????????????<li><a href="javascript:;">管理员查看</a></li>14 ????????????<li><a href="javascript:;">管理员添加</a></li>15 ????????????<li><a href="javascript:;">管理员修改</a></li>16 ????????</ul>17 ????</li>18 ????<li accordion-id="menu3">用户管理</li>19 ????<li>20 ????????<ul>21 ????????????<li><a href="javascript:;">用户查看</a></li>22 ????????????<li><a href="javascript:;">用户添加</a></li>23 ????????????<li><a href="javascript:;">用户修改</a></li>24 ????????</ul>25 ????</li>26 </ul>27 <!-- accordioon组件 END -->

插件主体是一个<ul>列表,里面的奇数<li>为菜单项标题,偶数<li>是菜单项内容,标题<li>被点击时会判断它是否已经选中了,如果没有选中,会把该菜单项选中,打开内容面板,同时关闭其余的菜单项。

菜单项内容里面又是一个<ul>列表,每一个<li>都包含一个<a>标签,在我们的例子中<a>标签的单击事件是向右侧的tab里面添加一个选项卡。

三、样式

 1 /* 手风琴样式 */ 2 .accordion {margin: 5px;font-size: 14px;} 3 /* 链接样式 */ 4 .accordion a {color: #333333;text-decoration: none;} 5 .accordion a:hover {color: #c81623;} 6 /* 菜单标题样式 */ 7 .accordion .accordion-title {margin: 5px 0;padding: 5px;height: 25px;line-height: 25px;background: #dddddd;border-radius: 5px;cursor: pointer;} 8 .accordion .accordion-title:hover {font-weight: bold;} 9 /* 菜单面板样式 */10 .accordion .accordion-body {padding-left: 10px;background: white;}

四、主要功能函数

1、初始化插件样式和事件
 1 /** 2 ?* 初始化accordion组件 3 ?* @param {Object} $accordion 4 ?*/ 5 function init($accordion) { 6 ????$accordion 7 ????????.children("li:even").addClass("accordion-title").end() 8 ????????.children("li:odd").addClass("accordion-body") 9 ????????.css("display", "none").eq(0)10 ????????.css("display", "list-item");11 }12 13 /**14 ?* 绑定事件15 ?* @param {Object} $accordion16 ?*/17 function initEvents($accordion) {18 ????$accordion.delegate(".accordion-title", "click", function() {19 ????????// 为菜单title添加样式20 ????????$(this).addClass("active").siblings(".accordion-title").removeClass("active");21 ????????// 调用select选中指定菜单22 ????????select($accordion, $(this).attr("accordion-id"));23 ????});24 }
2、选中指定菜单
1 /**2 ?* 选中指定菜单3 ?* @param {Object} $accordion4 ?* @param {Object} accordionId5 ?*/6 function select($accordion, accordionId) {7 ????// 面板动画切换8 ????$accordion.children("li[accordion-id=" + accordionId + "]").next().slideDown(‘100‘).siblings(‘.accordion-body‘).slideUp(‘100‘);9 }
3、判断指定菜单是否选中
1 /**2 ?* 判断指定菜单是否选中3 ?* @param {Object} $accordion4 ?* @param {Object} accordionId5 ?*/6 function isSelected($accordion, accordionId) {7 ????// 通过菜单title是否有active样式来判断8 ????return $accordion.children("li[accordion-id=" + accordionId + "]").hasClass("active");9 }
4、插件扩展函数
 1 $.fn.accordion = function(options, param) { 2 ?????3 ????// 保存对象 4 ????var accordion = $(this); 5 ?????6 ????if (typeof options == ‘string‘) { 7 ????????switch(options){ 8 ????????????case ‘select‘: 9 ????????????????return select(accordion, param);10 ????????????case ‘isSelected‘:11 ????????????????return isSelected(accordion, param);12 ????????}13 ????}14 ????15 ????options = options || {};16 17 ????return this.each(function() {18 ????????// 初始化组件19 ????????init(accordion);20 ????????// 绑定事件21 ????????initEvents(accordion);22 ????});23 };

五、源码下载

https://github.com/xuguofeng/jq-ui

使用jQuery开发accordion手风琴插件

原文地址:http://www.cnblogs.com/xugf/p/7804473.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved