jQuery UI API - 折疊面板部件(Accordion Widget)

所屬類別

小部件(Widgets)

用法

描述:把一對標題和內容面板轉換成折疊面板。

版本新增:1.0

折疊面板容器的標記需要一對標題和內容面板。

<div id="accordion">
  <h3>First header</h3>
  <div>First content panel</div>
  <h3>Second header</h3>
  <div>Second content panel</div>
</div>

折疊面板支持任意標記,但是每個內容面板必須是與其相關的頭部面板的下一個同級。請查看 header 選項了解如何使用自定義的標記結構。

面板可以通過設置 active 選項以編程的方式激活。

鍵盤交互

當焦點在標題(header)上時,下面的鍵盤命令可用:

  • UP/LEFT - 移動焦點到上一個標題(header)。如果在第一個標題(header)上,則移動焦點到最后一個標題(header)上。
  • DOWN/RIGHT - 移動焦點到下一個標題(header)。如果在最后一個標題(header)上,則移動焦點到第一個標題(header)上。
  • HOME - 移動焦點到第一個標題(header)上。
  • END - 移動焦點到最后一個標題(header)上。
  • SPACE/ENTER - 激活與獲得焦點的標題(header)相關的面板(panel)。

當焦點在面板(panel)中時,下面的鍵盤命令可用:

  • CTRL+UP:移動焦點到相關的標題(header)。

主題化

折疊面板部件(Accordion Widget)使用 jQuery UI CSS 框架 來定義它的外觀和感觀的樣式。如果需要使用折疊面板指定的樣式,則可以使用下面的 CSS class 名稱:

  • ui-accordion:折疊面板的外層容器。
    • ui-accordion-header:折疊面板的標題。如果標題包含 icons,則標題會另外有個 ui-accordion-icons class。
    • ui-accordion-content:折疊面板的內容面板。

依賴

附加說明

  • 該部件要求一些功能性的 CSS,否則將無法工作。如果您創(chuàng)建了一個自定義的主題,請使用小部件指定的 CSS 文件作為起點。

快速導航

選項 方法 事件

選項 類型 描述 默認值
active Boolean 或 Integer 當前打開哪一個面板。

支持多個類型:

  • Boolean:設置 activefalse 將折疊所有的面板。這要求 collapsible 選項必須為 true
  • Integer:激活打開的面板索引,以零為基礎。負值則表示從最后一個面板后退選擇面板。

代碼實例:

初始化帶有指定 active 選項的 accordion:

$( ".selector" ).accordion({ active: 2 });
	

在初始化后,獲取或設置 active 選項:

// getter
var active = $( ".selector" ).accordion( "option", "active" );
 
// setter
$( ".selector" ).accordion( "option", "active", 2 );
	
0
animate Boolean 或 Number 或 String 或 Object 是否使用動畫改變面板,且如何使用動畫改變面板。

支持多個類型:

  • Booleanfalse 值將禁用動畫。
  • Number:easing 默認的持續(xù)時間,以毫秒計。
  • String:默認的持續(xù)時間要使用的 easing 名稱。
  • Objecteasingduration 屬性的動畫設置。
    • 上面任意的選項都可以包含 down 屬性。
    • 當被激活的面板有一個比當前激活面板較低的指數(shù)時,發(fā)生 "Down" 動畫。

代碼實例:

初始化帶有指定 animate 選項的 accordion:

$( ".selector" ).accordion({ animate: "bounceslide" });
	

在初始化后,獲取或設置 animate 選項:

// getter
var animate = $( ".selector" ).accordion( "option", "animate" );
 
// setter
$( ".selector" ).accordion( "option", "animate", "bounceslide" );
	
{}
collapsible Boolean 所有部分是否都可以馬上關閉。允許折疊激活的部分。

代碼實例:

初始化帶有指定 collapsible 選項的 accordion:

$( ".selector" ).accordion({ collapsible: true });
	

在初始化后,獲取或設置 collapsible 選項:

// getter
var collapsible = $( ".selector" ).accordion( "option", "collapsible" );
 
// setter
$( ".selector" ).accordion( "option", "collapsible", true );
	
false
disabled Boolean 如果設置為 true,則禁用該 accordion。

代碼實例:

初始化帶有指定 disabled 選項的 accordion:

$( ".selector" ).accordion({ disabled: true });
	

在初始化后,獲取或設置 disabled 選項:

// getter
var disabled = $( ".selector" ).accordion( "option", "disabled" );
 
// setter
$( ".selector" ).accordion( "option", "disabled", true );
	
false
event String accordion 頭部會作出反應的事件,用以激活相關的面板??梢灾付ǘ鄠€事件,用空格間隔。

代碼實例:

初始化帶有指定 event 選項的 accordion:

$( ".selector" ).accordion({ event: "mouseover" });
	

在初始化后,獲取或設置 event 選項:

// getter
var event = $( ".selector" ).accordion( "option", "event" );
 
// setter
$( ".selector" ).accordion( "option", "event", "mouseover" );
	
"click"
header Selector 標題元素的選擇器,通過主要 accordion 元素上的 .find() 進行應用。內容面板必須是緊跟在與其相關的標題后的同級元素。

代碼實例:

初始化帶有指定 header 選項的 accordion:

$( ".selector" ).accordion({ header: "h3" });
	

在初始化后,獲取或設置 header 選項:

// getter
var header = $( ".selector" ).accordion( "option", "header" );
 
// setter
$( ".selector" ).accordion( "option", "header", "h3" );
	
"> li > :first-child,> :not(li):even"
heightStyle String 控制 accordion 和每個面板的高度。可能的值:
  • "auto":所有的面板將會被設置為最高的面板的高度。
  • "fill":基于 accordion 的父元素的高度,擴展到可用的高度。
  • "content":每個面板的高度取決于它的內容。

代碼實例:

初始化帶有指定 heightStyle 選項的 accordion:

$( ".selector" ).accordion({ heightStyle: "fill" });
	

在初始化后,獲取或設置 heightStyle 選項:

// getter
var heightStyle = $( ".selector" ).accordion( "option", "heightStyle" );
 
// setter
$( ".selector" ).accordion( "option", "heightStyle", "fill" );
	
"auto"
icons Object 標題要使用的圖標,與 jQuery UI CSS 框架提供的圖標(Icons) 匹配。設置為 false 則不顯示圖標。
  • header (string,默認值:"ui-icon-triangle-1-e")
  • activeHeader (string,默認值:"ui-icon-triangle-1-s")

代碼實例:

初始化帶有指定 icons 選項的 accordion:

$( ".selector" ).accordion({ icons: { "header": "ui-icon-plus", "activeHeader": "ui-icon-minus" } });
	

在初始化后,獲取或設置 icons 選項:

// getter
var icons = $( ".selector" ).accordion( "option", "icons" );
 
// setter
$( ".selector" ).accordion( "option", "icons", { "header": "ui-icon-plus", "activeHeader": "ui-icon-minus" } );
	
{ "header": "ui-icon-triangle-1-e", "activeHeader": "ui-icon-triangle-1-s" }

方法 返回 描述
destroy() jQuery (plugin only) 完全移除 accordion 功能。這會把元素返回到它的預初始化狀態(tài)。
  • 該方法不接受任何參數(shù)。

代碼實例:

調用 destroy 方法:

$( ".selector" ).accordion( "destroy" );
	
disable() jQuery (plugin only) 禁用 accordion。
  • 該方法不接受任何參數(shù)。

代碼實例:

調用 disable 方法:

$( ".selector" ).accordion( "disable" );
	
enable() jQuery (plugin only) 啟用 accordion。
  • 該方法不接受任何參數(shù)。

代碼實例:

調用 enable 方法:

$( ".selector" ).accordion( "enable" );
	
option( optionName ) Object 獲取當前與指定的 optionName 關聯(lián)的值。
  • optionName
    類型:String
    描述:要獲取的選項的名稱。

代碼實例:

調用該方法:

var isDisabled = $( ".selector" ).accordion( "option", "disabled" );
	
option() PlainObject 獲取一個包含鍵/值對的對象,鍵/值對表示當前 accordion 選項哈希。
  • 該方法不接受任何參數(shù)。

代碼實例:

調用該方法:

var options = $( ".selector" ).accordion( "option" );
	
option( optionName, value ) jQuery (plugin only) 設置與指定的 optionName 關聯(lián)的 accordion 選項的值。
  • optionName
    類型:String
    描述:要設置的選項的名稱。
  • value
    類型:Object
    描述:要為選項設置的值。

代碼實例:

調用該方法:

$( ".selector" ).accordion( "option", "disabled", true );
	
option( options ) jQuery (plugin only) 為 accordion 設置一個或多個選項。
  • options
    類型:Object
    描述:要設置的 option-value 對。

代碼實例:

調用該方法:

$( ".selector" ).accordion( "option", { disabled: true } );
	
refresh() jQuery (plugin only) 處理任何在 DOM 中直接添加或移除的標題和面板,并重新計算 accordion 的高度。結果取決于內容和 heightStyle 選項。
  • 該方法不接受任何參數(shù)。

代碼實例:

調用 refresh 方法:

$( ".selector" ).accordion( "refresh" );
	
widget() jQuery 返回一個包含 accordion 的 jQuery 對象。
  • 該方法不接受任何參數(shù)。

代碼實例:

調用 widget 方法:

var widget = $( ".selector" ).accordion( "widget" );
	

事件 類型 描述
activate( event, ui ) accordionactivate 面板被激活后觸發(fā)(在動畫完成之后)。如果 accordion 之前是折疊的,則 ui.oldHeaderui.oldPanel 將是空的 jQuery 對象。如果 accordion 正在折疊,則 ui.newHeaderui.newPanel 將是空的 jQuery 對象。

注意:由于 activate 事件只有在面板激活時才能觸發(fā),當創(chuàng)建 accordion 部件時,最初的面板不會觸發(fā)該事件。如果您需要一個用于部件創(chuàng)建的鉤,請使用 create 事件。

  • event
    類型:Event
  • ui
    類型:Object
    • newHeader
      類型:jQuery
      描述:剛被激活的標題。
    • oldHeader
      類型:jQuery
      描述:剛被取消激活的標題。
    • newPanel
      類型:jQuery
      描述:剛被激活的面板。
    • oldPanel
      類型:jQuery
      描述:剛被取消激活的面板。

代碼實例:

初始化帶有指定 activate 回調的 accordion:

$( ".selector" ).accordion({
  activate: function( event, ui ) {}
});
	

綁定一個事件監(jiān)聽器到 accordionactivate 事件:

$( ".selector" ).on( "accordionactivate", function( event, ui ) {} );
	
beforeActivate( event, ui ) accordionbeforeactivate 面板被激活前直接觸發(fā)。可以取消以防止面板被激活。如果 accordion 當前是折疊的,則 ui.oldHeaderui.oldPanel 將是空的 jQuery 對象。如果 accordion 正在折疊,則 ui.newHeaderui.newPanel 將是空的 jQuery 對象。
  • event
    類型:Event
  • ui
    類型:Object
    • newHeader
      類型:jQuery
      描述:將被激活的標題。
    • oldHeader
      類型:jQuery
      描述:將被取消激活的標題。
    • newPanel
      類型:jQuery
      描述:將被激活的面板。
    • oldPanel
      類型:jQuery
      描述:將被取消激活的面板。

代碼實例:

初始化帶有指定 beforeActivate 回調的 accordion:

$( ".selector" ).accordion({
  beforeActivate: function( event, ui ) {}
});
	

綁定一個事件監(jiān)聽器到 accordionbeforeactivate 事件:

$( ".selector" ).on( "accordionbeforeactivate", function( event, ui ) {} );
	
create( event, ui ) accordioncreate 當創(chuàng)建 accordion 時觸發(fā)。如果 accordion 是折疊的,ui.headerui.panel 將是空的 jQuery 對象。
  • event
    類型:Event
  • ui
    類型:Object
    • header
      類型:jQuery
      描述:激活的標題。
    • panel
      類型:jQuery
      描述:激活的面板。

代碼實例:

初始化帶有指定 create 回調的 accordion:

$( ".selector" ).accordion({
  create: function( event, ui ) {}
});
	

綁定一個事件監(jiān)聽器到 accordioncreate 事件:

$( ".selector" ).on( "accordioncreate", function( event, ui ) {} );
	

實例

一個簡單的 jQuery UI 折疊面板(Accordion)。

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>折疊面板部件(Accordion Widget)演示</title>
  <link rel="stylesheet"  rel="external nofollow" target="_blank" >
  <script src="http://code.jquery.com/jquery-1.10.2.js" rel="external nofollow" ></script>
  <script src="http://code.jquery.com/ui/1.10.4/jquery-ui.js" rel="external nofollow" ></script>
</head>
<body>
 
<div id="accordion">
  <h3>部分 1</h3>
  <div>
    <p>Mauris mauris ante, blandit et, ultrices a, suscipit eget.
    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.</p>
  </div>
  <h3>部分 2</h3>
  <div>
    <p>Sed non urna. Phasellus eu ligula. Vestibulum sit amet purus.
    Vivamus hendrerit, dolor aliquet laoreet, mauris turpis velit,
    faucibus interdum tellus libero ac justo.</p>
  </div>
  <h3>部分 3</h3>
  <div>
    <p>Nam enim risus, molestie et, porta ac, aliquam ac, risus.
    Quisque lobortis.Phasellus pellentesque purus in massa.</p>
    <ul>
      <li>List item one</li>
      <li>List item two</li>
      <li>List item three</li>
    </ul>
  </div>
</div>
 
<script>
$( "#accordion" ).accordion();
</script>
 
</body>
</html>

查看演示