jQuery之折叠面板的深入解析


Posted in Javascript onJune 19, 2013

1:折叠面板可以将不同分类的内容分别放在不同的面板中,这些面板在页面中层叠摆放,用户可以通过单击各个面板的标题来展开该面板,查看面板的内容,
与此同时,将自动折叠隐藏其他面板
$(selector).accordion(options);
options可以选择的属性为:
disabled, active, animated, autoHeight, clearStyle, collapsible, event, fillSpace, header, icons, navigation, navigationFilter
简单实例:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
 <title>Accordion AutoHeight</title>
 <link rel="stylesheet" href="themes/base/jquery.ui.all.css">
 <script src="JS/jquery-1.4.2.min.js"></script>
 <script src="JS/jquery.ui.core.js"></script>
 <script src="JS/jquery.ui.widget.js"></script>
 <script src="JS/jquery.ui.accordion.js"></script>
 <script>
 $(function() {
  $( "#accordion" ).accordion({
   autoHeight: false
  });
 }); 
 </script>
    <style type="text/css">
 #accordion h3{ font-size:13px; font-weight:700; }
 #accordion>div{ font-size:12px; }
    </style>
</head>
<body>
<div id="accordion">
    <h3><a href="#">标题 1</a></h3>
    <div>
        这是一段较少的内容<br />
    </div>
    <h3><a href="#">标题 2</a></h3>
    <div>
        这是一段很长的内容<br />这是一段很长的内容<br />
        这是一段很长的内容<br />这是一段很长的内容<br />
        这是一段很长的内容<br />这是一段很长的内容<br />
        这是一段很长的内容<br />这是一段很长的内容<br />
    </div>
</div>
<div style="margin:8px 0; padding:10px; height:50px; border:solid 1px #aaa;">
这是另一个模块,将随着折叠面板的大小而改变位置
</div>
</body>
</html>

效果图:
jQuery之折叠面板的深入解析

2:自定义折叠面板图标

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
 <title>Accordion Icon</title>
 <link rel="stylesheet" href="themes/base/jquery.ui.all.css">
 <script type="text/javascript" src="JS/jquery-1.4.2.min.js"></script>
 <script type="text/javascript" src="JS/jquery.ui.core.js"></script>
 <script type="text/javascript" src="JS/jquery.ui.widget.js"></script>
 <script type="text/javascript" src="JS/jquery.ui.accordion.js"></script>
 <script>
 $(document).ready(function() {
  var triangle_icon = {
   header : "ui-icon-triangle-1-e",
   headerSelected : "ui-icon-triangle-1-s"
  };  var circle_arrow_icon = {
   header: "ui-icon-circle-arrow-e",
   headerSelected: "ui-icon-circle-arrow-s"
  };
  /* 初始化折叠面板 */
  $('#accordion').accordion();
  $( "#toggle" ).toggle(function() {
   $( "#accordion" ).accordion( "option", "icons", circle_arrow_icon );
  }, function() {
   $( "#accordion" ).accordion( "option", "icons", triangle_icon );
  });
 }); 
 </script>
    <style type="text/css">
 body{ padding:30px; }
 #accordion h3{ font-size:13px; font-weight:700; }
 #accordion>div{ font-size:12px; }
    </style>
</head>
<body>
<div style="width:220px; margin:10px 0;">
    <div id="accordion">
        <h3><a href="#">标题 1</a></h3>
        <div>
            这是一段内容<br />
        </div>
        <h3><a href="#">标题 2</a></h3>
        <div>
            这是一段内容<br />
        </div>
    </div>
</div>
<input id="toggle" value="切换图标" type="button"  />
</body>
</html>

程序效果图:
 jQuery之折叠面板的深入解析
3:能自定义排列顺序的折叠面板
折叠面板可以作为分类项目的主面板来使用,因为操作习惯,用户通常希望能够自定义面板的位置
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>AccordionSortable</title>
<link rel="stylesheet" type="text/css" href="themes/base/jquery.ui.all.css"/>
<script type="text/javascript" src="JS/jquery-1.4.2.min.js"></script>
<script type="text/javascript" src="JS/jquery.ui.core.js"></script>
<script type="text/javascript" src="JS/jquery.ui.widget.js"></script>
<script type="text/javascript" src="JS/jquery.ui.mouse.js"></script>
<script type="text/javascript" src="JS/jquery.ui.sortable.js"></script>
<script type="text/javascript" src="JS/jquery.ui.accordion.js"></script>
<script type="text/javascript">
$(document).ready(function(){
 $("#accordion")
  .accordion({
   header: "> div > h4"  //指定标题为该面板容器下的div标签中的h4元素
  })
  .sortable();  //可以将其封装为可排序的控件
});
</script>
<style>
body{ padding:30px; }
#accordion{ font-size:12px; }
#accordion>div>h3{ font-size:13px; font-weight:700; }
</style>
</head>
<body>
<div style="width:300px; ">
    <div id="accordion">
        <div>
            <h4><a href="#">标题 1</a></h4>
            <div>
                这是一段内容<br />
            </div>
        </div>
        <div>
            <h4><a href="#">标题 2</a></h4>
            <div>
                这是一段内容<br />
            </div>
        </div>
        <div>
            <h4><a href="#">标题 3</a></h4>
            <div>
                这是一段内容<br />
            </div>
        </div>
    </div>
</div>
</body>
</html>

jQuery之折叠面板的深入解析
4:折叠面板的方法
destroy, disable, enable, option, widget, activate, resize
$('#accordion').accordion("activate", 2);
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
 <meta charset="GBK">
 <title>Accordion Resize</title>
 <link rel="stylesheet" href="themes/base/jquery.ui.all.css">
 <script src="JS/jquery-1.4.2.min.js"></script>
 <script src="JS/jquery.ui.core.js"></script>
 <script src="JS/jquery.ui.widget.js"></script>
 <script src="JS/jquery.ui.mouse.js"></script>
 <script src="JS/jquery.ui.resizable.js"></script>
 <script src="JS/jquery.ui.accordion.js"></script>
 <script>
 $(document).ready(function(){
  $( "#accordion" ).accordion({
   fillSpace : true  /* 设置为自动填充父元素空间 */
  });  /* 将容器设置为可改变大小的,
   最小高度为150,
   并且在改变大小的时候调用折叠面板的resize方法 */
  $( "#container" ).resizable({
   minHeight : 150,
   resize : function() {
    $( "#accordion" ).accordion( "resize" );
   }
  });
 });
 </script>
    <style type="text/css">
 #accordion h3{ font-size:13px; font-weight:700; }
 #accordion>div{ font-size:12px; }
 #container{ padding:10px; width:300px; height:180px; }
    </style>
</head>
<body>
<!-- 折叠面析的容器 -->
<div id="container" class="ui-widget-content">
    <!-- 折叠面析。其子元素中h3为面板标题,div为面板主体 -->
    <div id="accordion">
        <h3><a href="#">标题 1</a></h3>
        <div>
            这是第一段内容<br />
            <ul>
                <li>列表项 1</li><li>列表项 2</li><li>列表项 3</li>
            </ul>
        </div>
        <h3><a href="#">标题 2</a></h3>
        <div>
            这是第二段内容<br />这是第二段内容<br />
        </div>
        <h3><a href="#">标题 3</a></h3>
        <div>
            这是第三段内容<br />这是第三段内容<br />这是第三段内容<br />
        </div>
    </div>
    <!-- 这个span标记将显示一个拖动柄 -->
    <span class="ui-icon ui-icon-grip-dotted-horizontal" style="margin:2px auto;"></span>
</div>
<div style="margin:8px 0; padding:10px; width:300px; height:50px; border:solid 1px #aaa;">
这是另一个模块,将随着折叠面板容器的大小而改变位置
</div>
</body>
</html>

效果图:
  jQuery之折叠面板的深入解析

上述代码首先将折叠面板初始化为可自动填充父元素的组件,然后设置容器可以自动调整大小,并在容器控件大小改变时调用折叠面板的resize方法,
最后实现一起调整大小的效果
5:折叠面板的事件
change和changestart事件

  $("#accordion").accordion({
     change: function(event, ui) {
     },
     changestart: function(event, ui) {
     }
   })

*event: 触发的事件对象
*ui:视图对象
,有4个属性,即newHeader, 表示当前面板标题;oldHeader,表示前一个面板的标题,newContent:表示当前面板内容;oldContent, 表示前一个面板内容,
这些返回的都是jQuery对象
Javascript 相关文章推荐
打豆豆小游戏 用javascript编写的[打豆豆]小游戏
Jan 08 Javascript
js生成动态表格并为每个单元格添加单击事件的方法
Apr 14 Javascript
页面内容排序插件jSort使用方法
Oct 10 Javascript
JavaScript判断页面加载完之后再执行预定函数的技巧
May 17 Javascript
js多功能分页组件layPage使用方法详解
May 19 Javascript
Vue.js快速入门实例教程
Oct 15 Javascript
基于SpringMVC+Bootstrap+DataTables实现表格服务端分页、模糊查询
Oct 30 Javascript
javascript表达式和运算符详解
Feb 07 Javascript
Vue学习笔记进阶篇之单元素过度
Jul 19 Javascript
基于Bootstrap的标签页组件及bootstrap-tab使用说明
Jul 25 Javascript
vue项目部署到Apache服务器中遇到的问题解决
Aug 24 Javascript
解决vant的Toast组件时提示not defined的问题
Nov 11 Javascript
jQuery之选择组件的深入解析
Jun 19 #Javascript
解析DHTML,JavaScript,DOM,BOM以及WEB标准的描述
Jun 19 #Javascript
JavaScript中把数字转换为字符串的程序代码
Jun 19 #Javascript
解析JavaScript中的标签语句
Jun 19 #Javascript
解析window.open的使用方法总结
Jun 19 #Javascript
解析js中获得父窗口链接getParent方法以及各种打开窗口的方法
Jun 19 #Javascript
Js,alert出现乱码问题的解决方法
Jun 19 #Javascript
You might like
40年前的这部特摄片恐龙特级克塞号80后的共同回忆
2020/03/08 日漫
用PHP实现小型站点广告管理
2006/10/09 PHP
PHP读取MySQL数据代码
2008/06/05 PHP
PHP 接入支付宝即时到账功能
2016/09/18 PHP
PHP实现多图上传和单图上传功能
2018/05/17 PHP
PHP判断当前使用的是什么浏览器(推荐)
2019/10/27 PHP
jquery及原生js获取select下拉框选中的值示例
2013/10/25 Javascript
javascript间隔刷新的简单实例
2013/11/14 Javascript
基于JavaScript代码实现兼容各浏览器的设为首页和加入收藏
2016/01/07 Javascript
三种Node.js写文件的方式
2016/03/08 Javascript
解决URL地址中的中文乱码问题的办法
2017/02/10 Javascript
javaScript canvas实现(画笔大小 颜色 橡皮的实例)
2017/11/28 Javascript
尝试自己动手用react来写一个分页组件(小结)
2018/02/09 Javascript
基于Vuejs的搜索匹配功能实现方法
2018/03/03 Javascript
ng-events类似ionic中Events的angular全局事件
2018/09/05 Javascript
详解react内联样式使用webpack将px转rem
2018/09/13 Javascript
详解服务端预渲染之Nuxt(介绍篇)
2019/04/07 Javascript
JS document文档的简单操作完整示例
2020/01/13 Javascript
Python打造出适合自己的定制化Eclipse IDE
2016/03/02 Python
Python脚本实现自动将数据库备份到 Dropbox
2017/02/06 Python
Python实现识别手写数字 简易图片存储管理系统
2018/01/29 Python
python设计微型小说网站(基于Django+Bootstrap框架)
2019/07/08 Python
tensorflow 获取所有variable或tensor的name示例
2020/01/04 Python
Django实现将一个字典传到前端显示出来
2020/04/03 Python
Python 利用argparse模块实现脚本命令行参数解析
2020/12/28 Python
在线服装零售商:SheIn
2016/07/22 全球购物
英国玛莎百货澳大利亚:Marks & Spencer Australia
2019/08/30 全球购物
在weblogic中发布ejb需涉及到哪些配置文件
2012/01/17 面试题
如何整合JQuery和Prototype
2014/01/31 面试题
介绍下Lucene建立索引的过程
2016/03/02 面试题
秘书英文求职信范文
2014/01/31 职场文书
汽车促销活动方案
2014/03/31 职场文书
导游词之苏州盘门景区
2019/11/12 职场文书
MySQL Shell import_table数据导入的实现
2021/08/07 MySQL
一文带你探究MySQL中的NULL
2021/11/11 MySQL
动画「进击的巨人」第86话播出感谢绘公开
2022/03/21 日漫