一、插件效果

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

效果如下:

  

二、插件内部HTML元素结构

 <!-- accordioon组件 -->
<ul class="accordion">
<li accordion-id="menu1" class="active">插件使用</li>
<li>
<ul>
<li><a href="javascript:;">选项卡插件</a></li>
<li><a href="javascript:;">手风琴插件</a></li>
</ul>
</li>
<li accordion-id="menu2">管理员管理</li>
<li>
<ul>
<li><a href="javascript:;">管理员查看</a></li>
<li><a href="javascript:;">管理员添加</a></li>
<li><a href="javascript:;">管理员修改</a></li>
</ul>
</li>
<li accordion-id="menu3">用户管理</li>
<li>
<ul>
<li><a href="javascript:;">用户查看</a></li>
<li><a href="javascript:;">用户添加</a></li>
<li><a href="javascript:;">用户修改</a></li>
</ul>
</li>
</ul>
<!-- accordioon组件 END -->

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

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

三、样式

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

四、主要功能函数

1、初始化插件样式和事件
 /**
* 初始化accordion组件
* @param {Object} $accordion
*/
function init($accordion) {
$accordion
.children("li:even").addClass("accordion-title").end()
.children("li:odd").addClass("accordion-body")
.css("display", "none").eq(0)
.css("display", "list-item");
} /**
* 绑定事件
* @param {Object} $accordion
*/
function initEvents($accordion) {
$accordion.delegate(".accordion-title", "click", function() {
// 为菜单title添加样式
$(this).addClass("active").siblings(".accordion-title").removeClass("active");
// 调用select选中指定菜单
select($accordion, $(this).attr("accordion-id"));
});
}
2、选中指定菜单
 /**
* 选中指定菜单
* @param {Object} $accordion
* @param {Object} accordionId
*/
function select($accordion, accordionId) {
// 面板动画切换
$accordion.children("li[accordion-id=" + accordionId + "]").next().slideDown('100').siblings('.accordion-body').slideUp('100');
}
3、判断指定菜单是否选中
 /**
* 判断指定菜单是否选中
* @param {Object} $accordion
* @param {Object} accordionId
*/
function isSelected($accordion, accordionId) {
// 通过菜单title是否有active样式来判断
return $accordion.children("li[accordion-id=" + accordionId + "]").hasClass("active");
}
4、插件扩展函数
 $.fn.accordion = function(options, param) {

     // 保存对象
var accordion = $(this); if (typeof options == 'string') {
switch(options){
case 'select':
return select(accordion, param);
case 'isSelected':
return isSelected(accordion, param);
}
} options = options || {}; return this.each(function() {
// 初始化组件
init(accordion);
// 绑定事件
initEvents(accordion);
});
};

五、源码下载

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

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

  1. 基于jQuery开发的手风琴插件 jquery.accordion.js

     1.插件代码 少说多做,基于jQuery的手风琴插件jquery.accordion.js的代码:  /* * 手风琴插件说明: * 1.treeTrunk对应树干 * 2.treeLeaf对应树叶 ...

  2. 使用jQuery开发tab选项卡插件

    为了复习巩固jQuery的插件开发.HTML和CSS方面的知识,做了一个简单的tab选项卡插件,简单记录一下开发.使用的过程,以备日后使用. 一.插件效果 tab选项卡插件常用的功能均已实现,包括:动 ...

  3. jQuery 开发一个简易插件

    jQuery 开发一个简易插件 //主要内容 $.changeCss = function(options){ var defaults = { color:'blue', ele:'text', f ...

  4. 使用jQuery开发tab选项卡插件(可以右键关闭多个标签)

    在前一篇“使用jQuery开发tab选项卡插件”的基础上添加了tab标签右键关闭菜单功能,菜单主要包括:关闭当前标签.关闭左侧标签.关闭右侧标签.关闭其他.关闭全部. 一.插件效果 二.实现思路 为w ...

  5. Jquery UI accordion手风琴菜单

    最近学习jQuery,总结了一些心得. 1.引用 <script type="text/javascript" src=jquery.js></script> ...

  6. [转]jquery开发自定义的插件总结

    本文转自:http://www.cnblogs.com/Jimmy009/archive/2013/01/17/jquery%E6%8F%92%E4%BB%B6.html 前几天在玩jquery,今天 ...

  7. JQuery开发工具和插件

    最近的研究jquery.为大家介绍几款开发工具.能够帮助你提高开发的效率. 1.Dreamweaver Dreamweaver是建立在WEB站点和应用程序的专业工具. 将可视化工具.应用程序开发功能和 ...

  8. jquery开发自定义的插件总结

    1.第一种方式,有元素的插件 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "htt ...

  9. 使用jQuery开发dialog对话框插件

    1.插件使用 首先引入 jquery 库,然后引入 dialog.js.dialog.css,如下: <script type="text/javascript" src=& ...

随机推荐

  1. Linux+Apache环境下安装SSL证书

    一.安装证书 (温馨提示:安装证书前请先备份您需要修改的服务器配置文件) 1.确认证书文件及证书路径.  例证书文件为:zzidc.com.jks,放置目录为Tomcat的conf目录下.  2.配置 ...

  2. Edusoho之X-Auth-Token

    昨天这篇文章Edusoho之Basic Authentication提到了X-Auth-Token.今天我主要讲的是Edusoho之X-Auth-Token的请求API方式. 至于为什么建议不要用HT ...

  3. if, if/else, if /elif/else,case

    一.if语句用法 if expression then command fi 例子:使用整数比较运算符 read -p "please input a integer:" a if ...

  4. Hbuilder提交项目到GitHub出现cannot open git-upload-pack

    问题描述 Hbuilder上传本地项目到GitHub时是通过下载的Egit插件,然而提交代码时出现下图问题 网上有说添加http的sslVerify=false,然并卵. 解决方案 不用hbuilde ...

  5. 【转】git branch 命令查看分支、删除远程分支、本地分支

    git branch 命令操作 1.查看本地分支 : git branch 前面带有*号的是当前分支 2 .删除本地分支: git branch -d [branchname] 提示删除了一个名为li ...

  6. 记某app内购破解 – 安卓逆向菜鸟的初体验

    前言 因为某个机缘,我拿到一个赛车app,玩了一会想买个装备,居然要我掏钱包,作为一名cracker,我觉得我的尊严受到了严重的蔑视(无奈钱包空空),我觉得要捍卫我那脆弱的玻璃心(钱包),所以,开干吧 ...

  7. pip3的国内安装源

    1,清华源 pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple virtualen 2,豆瓣源 pip3 install -i https ...

  8. [转]centos sqlite3安装及简单命令

    安装: 方法一: wget http://www.sqlite.org/sqlite-autoconf-3070500.tar.gz tar xvzf sqlite-autoconf-3070500. ...

  9. SDN实验---Ryu的安装

    一:Ryu是主流SDN开源控制器之一 (一)推文(摘录自) https://ryu.readthedocs.io/en/latest/ https://www.sdnlab.com/1785.html ...

  10. 改进初学者的PID-测量的比例介绍

    最近看到了Brett Beauregard发表的有关PID的系列文章,感觉对于理解PID算法很有帮助,于是将系列文章翻译过来!在自我提高的过程中,也希望对同道中人有所帮助.作者Brett Beaure ...