《jQuery、jQuery UI及jQuery Mobile技巧与示例》——7.1 技巧:使用折叠菜单微件组织内容

简介: 代码清单7-1介绍了折叠菜单(accordin)微件,通过它,可以将内容分组在标题下面,并且每次只显示选定的一组内容。单击另一个标题会关闭当前打开的一组内容然后在选定的标题下展开新的分组。

本节书摘来自异步社区《jQuery、jQuery UI及jQuery Mobile技巧与示例》一书中的第7章,第7.1节,作者:【荷】Adriaan de Jonge , 【美】Phil Dutson著,更多章节内容可以访问云栖社区“异步社区”公众号查看

7.1 技巧:使用折叠菜单微件组织内容

代码清单7-1介绍了折叠菜单(accordin)微件,通过它,可以将内容分组在标题下面,并且每次只显示选定的一组内容。单击另一个标题会关闭当前打开的一组内容然后在选定的标题下展开新的分组。

代码清单7-1 把< h3>和< div>元素转换成折叠菜单

00 <!DOCTYPE html>
01
02 <html lang="en">
03 <head>
04  <title>jQuery UI Accordion</title>
05  <link type="text/css" rel="stylesheet" href=
06   "http://code.jquery.com/ui/1.8.16/themes/base/jquery-ui.css"> 
07  <style>
08   div#my-accordion {
09      font-size: 14px;
10   }
11  </style>
12 </head>
13 <body>
14
15 <div id="my-accordion">
16  <h3>
17    <a href="#first">Try to switch to the next part</a>
18  </h3>
19  <div>
20   The content
21  </div>
22  <h3>
23   <a href="#second">Next</a>
24  </h3>
25  <div>
26   More content
27  </div>
28  <h3>
29   <a href="#third">Last</a>
30  </h3>
31  <div>
32   and the last content
33  </div>
34 </div>
35
36 <script src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
37 <script src="http://code.jquery.com/ui/1.8.16/jquery-ui.min.js">
38 </script>
39
40 <script>
41 // 请将下列代码移至一个外部的.js文件中
42 $(document).ready(function() {
43
44  $('#my-accordion').accordion();
45  
46 });
47 </script>
48 </body>
49 </html>

第15~34行显示了一个有特定HTML结构的div。你应该发现其中的模式,也就是一个h3元素包含一个锚(anchor)元素,其后接div元素,如此重复。h3元素会用作分组的标题,而为了能对分组进行折叠,div元素需要是能隐藏的。

7.1.1 为折叠菜单元素添加样式
本章的简介中已经提到,折叠菜单会生成精心设计的HTML结构。更准确地说,它扩展了现有的HTML结构。在div上应用accordion方法后,HTML看上去如下面的代码段。(注意:下面的HTML是程序生成的,不需要手动录入。)

<div id="my-accordion"
 class="ui-accordion ui-widget ui-helper-reset ui-accordion-icons"
 role="tablist">
 <h3
   class="ui-accordion-header ui-helper-reset ui-state-active
     ui-corner-top"
   role="tab"
   aria-expanded="true"
   aria-selected="true"
   tabindex="0">
   <span class="ui-icon ui-icon-triangle-1-s"></span>
   <a href="#first">First</a>
 </h3>
 <div
   class="ui-accordion-content ui-helper-reset ui-widget-content
    ui-corner-bottom ui-accordion-content-active"
   style="display: block; height: 18px; padding-top: 14px;
     padding-bottom: 14px; overflow-x: auto; overflow-y: auto; "
   role="tabpanel">Content for first section</div>
 <h3
   class="ui-accordion-header ui-helper-reset ui-state-default
     ui-corner-all"
   role="tab"
   aria-expanded="false"
   aria-selected="false"
   tabindex="-1" >
 <span class="ui-icon ui-icon-triangle-1-e"></span>
   <a href="#second">Second</a>
 </h3>
 <div
   class="ui-accordion-content ui-helper-reset ui-widget-content
     ui-corner-bottom"
   style="overflow-x: auto; overflow-y: auto; display: none;
     height: 18px; padding-top: 14px; padding-bottom: 14px; "
   role="tabpanel">Content for second section</div>

粗体部分表示相对于原来的HTML所做的更改。高亮显示的代码部分是可变的,当用户点击一个不同的折叠菜单的头部时,它们会随之变化。

7.1.2 设置折叠菜单的选项
有许多不同的选项可以设置和用于折叠菜单微件。表7-1列出了设置选项的例子,后面是每个选项功能的描述。

screenshot
screenshot
screenshot
7.1.3 捕获折叠菜单的事件
下面是一个示例,用来演示可能从ui参数得到的值:

ui = {
newContent: // 元素
newHeader:  // 元素
oldContent: // 元素
oldHeader:  // 元素
options: Object
 active: 3
 animated: "slide"
 autoHeight: true
 change: function (event, ui) {
 clearStyle: false
 collapsible: false
 disabled: false
 duration: undefined
 event: "click"
 fillSpace: false
 header: "> li > :first-child,> :not(li):even"
 icons: Object
 navigation: true
 navigationFilter: function (index) {
 proxied: "slide"
 proxiedDuration: undefined
}

下面演示了当一个新的折叠菜单组件实例化后,处理该事件的位置:

$('#my-accordion').accordion({create: function(event, ui) {
   // 事件处理
}});
//或
$('#my-accordion')
 .on('accordioncreate', function(event, ui) {
  // 事件处理
 })
 .accordion();
下面演示了选择了折叠菜单中的一个新分组,并且在组件切换动画完成后处理切换事件的位置:

$('#my-accordion').accordion({change: function(event, ui) {
  // 事件处理
}});
//或
$('#my-accordion').accordion()
 .on('accordionchange', function(event, ui) {
  // 事件处理
 });

下面演示了选择了折叠菜单中的一个新组,并且在动画刚开始时处理该事件的位置:

$('#my-accordion').accordion({changestart: function(event, ui) {
   // 事件处理
}});
//或
$('#my-accordion').accordion()
 .on('accordionchangestart', function(event, ui) {
   // 事件处理
 });

7.1.4 调用折叠菜单的方法
折叠菜单微件还包括了一些用于改变值和行为的方法。表7-2列出了这些可用的方法。
screenshot

相关文章
|
2月前
|
JavaScript 前端开发 索引
JQuery样式操作、click事件以及索引值-选项卡应用示例
JQuery样式操作、click事件以及索引值-选项卡应用示例
38 1
|
8月前
|
JSON 前端开发 Java
Mock.js之Element-ui搭建首页导航与左侧菜单
Mock.js之Element-ui搭建首页导航与左侧菜单
57 0
|
10月前
|
JSON 前端开发 JavaScript
【Element-UI】Mockjs及案例首页导航、左侧菜单
Mock.js是一个用于生成模拟数据的JavaScript库。它能够模拟后端API接口,用于前端开发时进行接口调试和测试提高自动化测试效率。使用Mock.js可以快速创建虚拟的数据,并且可以设置数据的类型、格式和规则,从而模拟真实的数据响应。Mock.js支持生成随机数据拦截Ajax请求以返回模拟数据支持RESTful API风格等功能,能够提高前端开发效率,并且减少对后端接口的依赖。支持生成随机的文本、数字、布尔值、日期、邮箱、链接、图片、颜色等。
|
1月前
|
Web App开发 缓存 JavaScript
JQuery Kendo UI使用技巧总结
JQuery Kendo UI使用技巧总结
20 4
|
2月前
|
JSON JavaScript 数据格式
jQuery 树型菜单完整代码
jQuery 树型菜单完整代码
|
9月前
|
JSON 前端开发 JavaScript
Element UI搭建首页导航和左侧菜单以及Mock.js和(组件通信)总线的运用
Element UI搭建首页导航和左侧菜单以及Mock.js和(组件通信)总线的运用
77 0
|
2月前
|
JavaScript
jQuery实现二级菜单
jQuery实现二级菜单
|
2月前
|
JSON 前端开发 JavaScript
【Element-UI】Mock.js,案例首页导航、左侧菜单
【Element-UI】Mock.js,案例首页导航、左侧菜单
63 0
|
9月前
|
人工智能 自然语言处理 语音技术
关于element ui中引入官方的NavMenu时出现点击某个子菜单时,所有的子菜单全都展开问题
关于element ui中引入官方的NavMenu时出现点击某个子菜单时,所有的子菜单全都展开问题
129 0
|
9月前
|
JavaScript
vue element-ui 菜单管理使用图标选择器组件
vue element-ui 菜单管理使用图标选择器组件
232 0