折叠菜单(accordion),和选项卡一样也是一种在同一个页面上切换不同内容的功
能UI。它和选项卡的使用几乎没有什么太大区别,只是显示的效果有所差异罢了。
一.使用accordion
使用accordion 比较简单,但需要按照指定的规范即可。
html :
<div id="accordion">
<h1>菜单1</h1>
<div>内容1</div>
<h1>菜单2</h1>
<div>内容2</div>
<h1>菜单3</h1>
<div>内容3</div>
</div>
jQuery :
$('#accordion').accordion();
二.修改accordion 样式
在显示的accordion 折叠菜单中,在火狐浏览器中打开Firebug 或者右击->查看元素。
这样,可以看看accordion 的样式,根据样式进行修改。为了和网站主题符合,对accordion
的标题背景进行修改。
//无须修改ui 里的CSS,直接用style.css 替代掉
.ui-widget-header {
background:url(../img/xxx.png);
}
三.accordion()方法的属性
选项卡方法有两种形式:1.accordion(options),options 是以对象键值对的形式传
参,每个键值对表示一个选项;2.accordion('action', param),action 是操作选项卡
方法的字符串,param 则是options 的某个选项。
属性 | 默认值/类型 | 说明 |
collapsible | false/布尔值 |
当设置为true 是,允许菜单折叠对应的内容。默
认值为false,不会关闭对应内容
|
disabled | 无/布尔值 | 默认为false,设置为true 则禁用折叠菜单 |
event | click/字符串 |
触发accordion 的事件类型,默认为click。可以
设置mouseover 等其他鼠标事件
|
active | 数组和布尔值 |
如果是数组,初始化时默认显示哪个tab,默认值
为0。如果是布尔值,那么默认是否折叠。条件
必须是collapsible 值为true
|
heightStyle | content/字符串 |
默认为auto,即自动根据最高的那个为基准,fill
则是填充一定的可用高度,content 则是根据内容
伸展高度
|
header | h1/字符串 | 设置折叠菜单的标题标签 |
icons | 默认图标 | 设置想要的图标 |
$('#accordion').accordion({
collapsible : true,
disabled : true,
event : 'mouseover',
active : 1,
active : true,
heightStyle : 'content',
header : 'h3',
icons: {
"header": "ui-icon-plus",
"activeHeader": "ui-icon-minus",
},
});
三.accordion()方法的事件
除了属性设置外,accordion()方法也提供了大量的事件。这些事件可以给各种不同状
态时提供回调函数。
事件名 | 说明 |
create |
当创建一个折叠菜单时激活此事件。该方法有两个参数
(event, ui),ui 参数有两个子属性header 和panel,得到当
前标题和内容选项的对象
|
activate |
当切换一个折叠菜单时,启动此事件。该方法有两个参
数(event, ui),ui 参数有四个子属性newHeader、newPanel、
oldHeader,oldPanel。分别得到的时候新header 对象、
新内容对象、旧header 对象和旧内容对象
|
beforeActivate |
当切换一个折叠菜单之前,启动此事件。该方法有两个
参数(event, ui) , ui 参数有四个子属性newHeader 、
newPanel、oldHeader,oldPanel。分别得到的时候新header
对象、新内容对象、旧header 对象和旧内容对象
|
//当折叠菜单创建时触发
$('#accordion').accordion({
create : function (event, ui) {
alert($(ui.header.get()).html());
alert($(ui.panel.get()).html());
},
});
//当切换到一个菜单时触发
$('#accordion').accordion({
activate : function (event, ui) {
alert($(ui.oldHeader.get()).html());
alert($(ui.oldPanel.get()).html());
alert($(ui.newHeader.get()).html());
alert($(ui.newPanel.get()).html());
},
});
//当切换到一个菜单之前触发
$('#accordion').accordion({
beforeActivate : function (event, ui) {
alert($(ui.oldHeader.get()).html());
alert($(ui.oldPanel.get()).html());
alert($(ui.newHeader.get()).html());
alert($(ui.newPanel.get()).html());
},
});
方法 | 返回值 | 说明 |
accordion('disable') | jQuery 对象 | 禁用折叠菜单 |
accordion('enable') | jQuery 对象 | 启用折叠菜单 |
accordion('widget') | jQuery 对象 | 获取折叠菜单的jQuery 对象 |
accordion('destroy') | jQuery 对象 |
删除折叠菜单, 直接阻断了
accordion
|
accordion('refresh') | jQuery 对象 | 更新折叠菜单,比如高度 |
accordion('option', param) | 一般值 | 获取options 属性的值 |
accordion('option', param,value) | jQuery 对象 | 设置options 属性的值 |
//禁用折叠菜单
$('#accordion').accordion('disable');
//启用折叠菜单
$('#accordion').accordion('enable');
//获取折叠菜单jQuery 对象
$('#accordion').accordion('widget');
//更新折叠菜单
$('#accordion').accordion('refresh');
//删除accordion 折叠菜单
$('#accordion').accordion('destroy');
//得到accordion 的options 值
alert($('#accordion').accordion('option', 'active'));
//设置accordion 的options 值
$('#accordion').accordion('option', 'active', 1);
五.accordion 中使用on()
在accordion 的事件中,提供了使用on()方法处理的事件方法。
特效名称 | 说明 |
accordionactivate | 折叠菜单切换时触发 |
accordionbeforeactivate | 折叠菜单切换前触发 |
//菜单切换时触发
$('#accordion').on('accordionactivate', function () {
alert('菜单切换时触发!');
});
//菜单切换前触发
$('#accordion').on('accordionbeforeactivate ', function () {
alert('菜单切换前触发!');
});