使用jQuery开发accordion手风琴插件

一、插件效果

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

效果如下:

  

二、插件内部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} $accordion
16  */
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} $accordion
4  * @param {Object} accordionId
5  */
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} $accordion
4  * @param {Object} accordionId
5  */
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

时间: 2024-08-08 06:36:17

使用jQuery开发accordion手风琴插件的相关文章

JQuery开发工具和插件

最近在学习jquery,今天就为大家介绍几款开发工具,可以帮助你提高开发的效率. 1.Dreamweaver Dreamweaver是建立在WEB站点和应用程序的专业工具.将可视化工具.应用程序开发功能和代码编辑支持组合在一起,使得各个层次的开发人员和设计人员都能够快速创建基于标准的网站和应用程序. 要使Dreamweaver支持jquery自动提示代码功能,方法很简单,只需要下载一个插件即可.下载地址如下: 在Dreamweaver中依次选择命令-扩展管理-安装管理-JQurery_API_m

jQuery 开发一个简易插件

jQuery 开发一个简易插件 //主要内容 $.changeCss = function(options){ var defaults = { color:'blue', ele:'text', fontSize:'30px' } var options = $.extend(defaults , options); var change ={ changeColor:function(){ $('#'+options.ele).css('color',options.color); }, c

Jquery UI accordion手风琴菜单

最近学习jQuery,总结了一些心得. 1.引用 <script type="text/javascript" src=jquery.js></script> 需要放在第一引用: 2.脚本的引用需要写<script></script>,不能够写<script />; 3.当调用jQuery的 Plugin 的时候,需要在 jQuery90.ready.function( '需要调用的plugin')写; 4.jQuery Ac

一些基于jQuery开发的控件

基于jQuery开发,非常简单的水平方向折叠控件.主页:http://letmehaveblog.blogspot.com/2007/10/haccordion-simple-horizontal-accordion.html (无法找到)下载:http://letmehaveblog.blogspot.com/2007/10/haccordion-simple-horizontal-accordion.html 示例:http://letmehaveblog.blogspot.com/2007

基于jQuery实现的Accordion手风琴自定义插件

目前网上有很多各种各样的手风琴插件,但是没有一个完整实现了的侧菜单,今天写了一个可以无限子节点的手风琴侧菜单,有需要的可以参考一下,有什么好的想法可以留言.(没有经过彻底测试,不过问题应该不大) 下面老规矩,直接贴代码: 1 (function ($) { 2 'use strict'; 3 var defaults = { 4 url: null, 5 param: {}, 6 data: {}, 7 fill: true, 8 level_space: 15, 9 onitemclick:

JavaScript之jQuery-9 jQuery 开发插件(添加新全局函数、添加jQuery对象方法、添加新简写方法、方法参数)

一.添加新的全局函数 全局函数 - 全局函数,实际上就是jQuery对象的方法,从实践角度看,它们是位于jQuery命名空间内部的函数 - jQuery内置的某些功能是通过全局函数实现的 - $.ajax()函数就是典型的全局函数 - 向jQuery命名空间添加一个函数,只需要将这个新函数指定为jQuery的一个属性值   - 如果要使用该全局函数时,可通过一下代码调用 - 也可以通过别名来调用 添加多个函数 - 如果我们想在插件中提供多个全局函数,可以独立的声明这些函数   - 还可以使用$.

Jquery开发插件的方法

Jquery未开发插件提供了两个方法: (1)Jquery.extend(object)    -为Jquery类本身添加新的方法;代码如下: $.extend({ add:function(a,b){ return a+b; } }); 调用方法:$.add(3,4) - $=Jquery 为jquery类添加了名为add的一个静态方法,之后便可以在引入jquery的地方,使用这个方法了,$.add(3,4); (2)Jquery.fn.extend(object) $.fn相当于Jquery

12款经典的白富美型—jquery图片轮播插件—前端开发必备

图片轮播是网站中的常用功能,用于在有限的网页空间内展示一组产品图片或者照片,同时还有非常吸引人的动画效果.本文向大家推荐12款实用的 jQuery 图片轮播效果插件,帮助你在你的项目中加入一些效果精美的图片轮播效果,希望这些插件能够帮助到你.Nivo Slider 首先推荐的这款插件号称世界上最棒的图片轮播插件,有独立的 jQuery 插件和 WordPress 插件两个版本. 目前下载量已经突破 1,800,000 次!jQuery 独立版本的插件主要有如下特色: ?  16个独特的过渡效果?

JQuery和javascript优秀插件收集

JQuery插件库: http://plugins.jquery.com/ 有趣的时钟: http://ynif.v099.10000net.cn/demo/shijian/3/shijian/index.html 别人收集信息8个实用的页面布局和用户界面jQuery插件http://blog.ui90.com/eight-practical-jquery-plugin-page-layout-and-user-interface.html15款最好的 jQuery 网格布局插件(Grid Pl