UI/API/1.7/Accordion

jQuery UI Accordion

概述

使选择的元素成为 Accordion 部件. 语义要求:

你的accordion容器需要按照一个元素成组的满足拥有配对的头部和内容面板的格式要求. 默认的头部是锚点, 假设结构如下:

<div id="accordion">
  <div>
    <a href="#">First header</a>
    <div>First content</div>
  </div>
  <div>
    <a href="#">Second header</a>
    <div>Second content</div>
  </div>
</div>

如果使用了其他的元素来做头部, 应使用适当的选择来作为标题, 例如. 头部: 'h3'. 内容元素必须紧接着它的头部元素.

如果您有连接到accordion内容的元素,并使用它来作为头部, 应添加一个样式使他们成为标题, 例如. 头部: 'a.header'.

程序通过激活(编号)来改变访问的内容.

注: 如果你想一次打开多个内容节, 请不要使用accordion

accordion不允许在同一时间打开多个内容节, 做到这一点需要很大的努力. 如果你正在寻找一个允许一次打开多个内容的部件,请不要使用accordion. 通常可以写几行jQuery,就像这样:

jQuery(document).ready(function(){
	$('.accordion .head').click(function() {
		$(this).next().toggle();
		return false;
	}).next().hide();
});

或者使用动画:

jQuery(document).ready(function(){
	$('.accordion .head').click(function() {
		$(this).next().toggle('slow');
		return false;
	}).next().hide();
});

其他附加文件

  • UI Core
  • UI Effects Core (可选 - 仅用于非默认的动画)

示例

一个简单的 jQuery UI Accordion.

$("#accordion").accordion();

<!DOCTYPE html>
<html>
<head>
  <link type="text/css" href="themes/base/ui.all.css" rel="stylesheet" />
  <script type="text/javascript" src="js/jquery.min.js"></script>
  <script type="text/javascript" src="ui/ui.core.js"></script>
  <script type="text/javascript" src="ui/ui.accordion.js"></script>
  <script type="text/javascript">
  $(document).ready(function(){
    $("#accordion").accordion();
  });
  </script>
</head>
<body style="font-size:62.5%;">
  
<div id="accordion">
	<h3><a href="#">Section 1</a></h3>
	<div>
		<p>
		Mauris mauris ante, blandit et, ultrices a, suscipit eget, quam. Integer
		ut neque. Vivamus nisi metus, molestie vel, gravida in, condimentum sit
		amet, nunc. Nam a nibh. Donec suscipit eros. Nam mi. Proin viverra leo ut
		odio. Curabitur malesuada. Vestibulum a velit eu ante scelerisque vulputate.
		</p>
	</div>
	<h3><a href="#">Section 2</a></h3>
	<div>
		<p>
		Sed non urna. Donec et ante. Phasellus eu ligula. Vestibulum sit amet
		purus. Vivamus hendrerit, dolor at aliquet laoreet, mauris turpis porttitor
		velit, faucibus interdum tellus libero ac justo. Vivamus non quam. In
		suscipit faucibus urna.
		</p>
	</div>
	<h3><a href="#">Section 3</a></h3>
	<div>
		<p>
		Nam enim risus, molestie et, porta ac, aliquam ac, risus. Quisque lobortis.
		Phasellus pellentesque purus in massa. Aenean in pede. Phasellus ac libero
		ac tellus pellentesque semper. Sed ac felis. Sed commodo, magna quis
		lacinia ornare, quam ante aliquam nisi, eu iaculis leo purus venenatis dui.
		</p>
		<ul>
			<li>List item one</li>
			<li>List item two</li>
			<li>List item three</li>
		</ul>
	</div>
	<h3><a href="#">Section 4</a></h3>
	<div>
		<p>
		Cras dictum. Pellentesque habitant morbi tristique senectus et netus
		et malesuada fames ac turpis egestas. Vestibulum ante ipsum primis in
		faucibus orci luctus et ultrices posuere cubilia Curae; Aenean lacinia
		mauris vel est.
		</p>
		<p>
		Suspendisse eu nisl. Nullam ut libero. Integer dignissim consequat lectus.
		Class aptent taciti sociosqu ad litora torquent per conubia nostra, per
		inceptos himenaeos.
		</p>
	</div>
</div>

</body>
</html>

参数

  • active

    类型:
    Selector, Element, jQuery, Boolean, Number
    默认值:
    first child

    选择一个可访问项. 设置为false在开始时不显示任何一项. 需要 «collapsible: true».

    代码示例

    使用指定的active参数初始化一个accordion.
    $('.selector').accordion({ active: 2 });
    在初始化后设置或者获取active参数.
    //获取
    var active = $('.selector').accordion('option', 'active');
    //设置
    $('.selector').accordion('option', 'active', 2);
  • animated

    类型:
    Boolean, String
    默认值:
    false

    选择你喜欢的动画, 或者关闭动画效果(设置为false). 除了默认的之外, 'bounceslide' 和 'easeslide' 也被支持 (都需要依赖一些简单的插件).

    代码示例

    使用指定的animated参数初始化一个accordion.
    $('.selector').accordion({ animated: 'easeslide' });
    在初始化后设置或者获取animated参数.
    //获取
    var animated = $('.selector').accordion('option', 'animated');
    //设置
    $('.selector').accordion('option', 'animated', 'easeslide');
  • autoHeight

    类型:
    Boolean
    默认值:
    true

    如果设置了该参数,高度最高的内容区域会被作为所有区域的高度,以提供更加一直的展开动画.

    代码示例

    使用指定的autoHeight参数初始化一个accordion.
    $('.selector').accordion({ autoHeight: false });
    在初始化后设置或者获取autoHeight参数.
    //获取
    var autoHeight = $('.selector').accordion('option', 'autoHeight');
    //设置
    $('.selector').accordion('option', 'autoHeight', false);
  • clearStyle

    类型:
    Boolean
    默认值:
    false

    设置此参数, 可以在动画结束后清除height和overflow样式. 如果accordions的工作依赖于动态内容. 请不要和此参数共同使用.

    代码示例

    使用指定的clearStyle参数初始化一个accordion.
    $('.selector').accordion({ clearStyle: true });
    在初始化后设置或者获取clearStyle参数.
    //获取
    var clearStyle = $('.selector').accordion('option', 'clearStyle');
    //设置
    $('.selector').accordion('option', 'clearStyle', true);
  • collapsible

    类型:
    Boolean
    默认值:
    false

    所有的章节是否可以一次关闭. 允许在触发事件时关闭打开的章节 (默认是点击操作).

    代码示例

    使用指定的collapsible参数初始化一个accordion.
    $('.selector').accordion({ collapsible: true });
    在初始化后设置或者获取collapsible参数.
    //获取
    var collapsible = $('.selector').accordion('option', 'collapsible');
    //设置
    $('.selector').accordion('option', 'collapsible', true);
  • event

    类型:
    String
    默认值:
    'click'

    使用哪个事件触发展开操作.

    代码示例

    使用指定的event参数初始化一个accordion.
    $('.selector').accordion({ event: 'mouseover' });
    在初始化后设置或者获取event参数.
    //获取
    var event = $('.selector').accordion('option', 'event');
    //设置
    $('.selector').accordion('option', 'event', 'mouseover');
  • fillSpace

    类型:
    Boolean
    默认值:
    false

    设置此参数, 可以使accordion与父容器的高度一致. 将覆盖autoheight参数.

    代码示例

    使用指定的fillSpace参数初始化一个accordion.
    $('.selector').accordion({ fillSpace: true });
    在初始化后设置或者获取fillSpace参数.
    //获取
    var fillSpace = $('.selector').accordion('option', 'fillSpace');
    //设置
    $('.selector').accordion('option', 'fillSpace', true);
  • header

    类型:
    Selector, jQuery
    默认值:
    '> li > :first-child,> :not(li):even'

    头部元素的Selector.

    代码示例

    使用指定的header参数初始化一个accordion.
    $('.selector').accordion({ header: 'h3' });
    在初始化后设置或者获取header参数.
    //获取
    var header = $('.selector').accordion('option', 'header');
    //设置
    $('.selector').accordion('option', 'header', 'h3');
  • icons

    类型:
    Object
    默认值:
    { 'header': 'ui-icon-triangle-1-e', 'headerSelected': 'ui-icon-triangle-1-s' }

    头部使用的Icons图标. 可以为'header'和'headerSelected'指定Icons, 我们推荐用jQuery UI ThemeRoller来使用jQuery UI CSS Framework

    代码示例

    使用指定的icons参数初始化一个accordion.
    $('.selector').accordion({ icons: { 'header': 'ui-icon-plus', 'headerSelected': 'ui-icon-minus' } });
    在初始化后设置或者获取icons参数.
    //获取
    var icons = $('.selector').accordion('option', 'icons');
    //设置
    $('.selector').accordion('option', 'icons', { 'header': 'ui-icon-plus', 'headerSelected': 'ui-icon-minus' });
  • navigation

    类型:
    Boolean
    默认值:
    false

    设置此参数, 可以寻找锚点相匹配的location.href并且访问它. 良好的基于链接的状态存储. 使用navigationFilter参数使你自定义的选择生效.

    代码示例

    使用指定的navigation参数初始化一个accordion.
    $('.selector').accordion({ navigation: true });
    在初始化后设置或者获取navigation参数.
    //获取
    var navigation = $('.selector').accordion('option', 'navigation');
    //设置
    $('.selector').accordion('option', 'navigation', true);
  • navigationFilter

    类型:
    Function
    默认值:

    使用你自己的选择器,使与之匹配的默认location.href被覆盖.

    代码示例

    使用指定的navigationFilter参数初始化一个accordion.
    $('.selector').accordion({ navigationFilter: function(){ ... } });
    在初始化后设置或者获取navigationFilter参数.
    //获取
    var navigationFilter = $('.selector').accordion('option', 'navigationFilter');
    //设置
    $('.selector').accordion('option', 'navigationFilter', function(){ ... });

事件

  • change

    类型:
    accordionchange

    此事件在accordion切换时触发. 如果accordion有动画, 此事件将在动画结束后触发; 否则, 立刻触发.

    $('.ui-accordion').bind('accordionchange', function(event, ui) {
      ui.newHeader // jQuery object, activated header
      ui.oldHeader // jQuery object, previous header
      ui.newContent // jQuery object, activated content
      ui.oldContent // jQuery object, previous content
    });

    代码示例

    提供一个回调函数对change事件进行操作.
    $('.selector').accordion({
       change: function(event, ui) { ... }
    });
    使用accordionchange类型来绑定change事件.
    $('.selector').bind('accordionchange', function(event, ui) {
      ...
    });

方法

  • destroy

    方法签名:
    .accordion( 'destroy' )

    完全移除accordion功能. 这将使元素返回到之前的初始化状态.

  • disable

    方法签名:
    .accordion( 'disable' )

    关闭 accordion.

  • enable

    方法签名:
    .accordion( 'enable' )

    打开 accordion.

  • option

    方法签名:
    .accordion( 'option' , optionName , [value] )

    获取或者设置accordion参数. 如果没有提供参数值则是获取.

  • activate

    方法签名:
    .accordion( 'activate', index )

    激活Accordion内容中的一部分. index可以是选择器匹配的元素,也可以是由0开始到所有匹配的header的编号. 设置为 -1 则关闭所有 (仅当collapsible参数设置为:true).

主题

jQuery UI Accordion插件使用jQuery UI CSS 框架的外观和风格,包括颜色和背景纹理.我们建议您使用ThemeRoller工具来创建和下载的自定义主题,很容易建立和维护.

如果有更深层次的个性化需要,有特定类别的工具ui.accordion.css样式可供参考,可以修改这些参考。这些课程是下面以高亮和粗体显示的。

jQuery UI CSS Framework classes示例

<div role="tablist" class="ui-accordion ui-widget ui-helper-reset" id="accordion">
  <div class="ui-accordion-group ui-accordion-selected">
    <h3 tabindex="0" class="ui-accordion-header ui-helper-reset ui-state-active ui-corner-top"><span class="ui-icon ui-icon-triangle-1-s"></span><a tabindex="-1" href="#">Section 1</a></h3>
    <div style="height: 113px;" class="ui-accordion-content-wrap ui-helper-reset ui-widget-content ui-corner-bottom"><div class="ui-accordion-content">
      <p>Content for section one</p>
      </div></div>
    </div>
    ...
  </div>
</div>

Note: 注:这是一个示例accordion插件所产生的标记,而不是你应该使用的标记.创建一个accordion唯一需要的标记是
<div>
   <h3><a href="#">Section 1</a></h3>
   <div>
      <p>Section 1 content</p>
   </div>
   <h3><a href="#">Section 2</a></h3>
   <div>
      <p>Section 2 content</p>
   </div>
   <h3><a href="#">Section 3</a></h3>
   <div>
      <p>Section 3 content</p>
   </div>
</div>.