jQuery之折疊面板的深入解析
更新時(shí)間:2013年06月19日 16:06:20 作者:
本篇文章是對jQuery中的折疊面板進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
1:折疊面板可以將不同分類的內(nèi)容分別放在不同的面板中,這些面板在頁面中層疊擺放,用戶可以通過單擊各個(gè)面板的標(biāo)題來展開該面板,查看面板的內(nèi)容,
與此同時(shí),將自動(dòng)折疊隱藏其他面板
$(selector).accordion(options);
options可以選擇的屬性為:
disabled, active, animated, autoHeight, clearStyle, collapsible, event, fillSpace, header, icons, navigation, navigationFilter
簡單實(shí)例:
<!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="#">標(biāo)題 1</a></h3>
<div>
這是一段較少的內(nèi)容<br />
</div>
<h3><a href="#">標(biāo)題 2</a></h3>
<div>
這是一段很長的內(nèi)容<br />這是一段很長的內(nèi)容<br />
這是一段很長的內(nèi)容<br />這是一段很長的內(nèi)容<br />
這是一段很長的內(nèi)容<br />這是一段很長的內(nèi)容<br />
這是一段很長的內(nèi)容<br />這是一段很長的內(nèi)容<br />
</div>
</div>
<div style="margin:8px 0; padding:10px; height:50px; border:solid 1px #aaa;">
這是另一個(gè)模塊,將隨著折疊面板的大小而改變位置
</div>
</body>
</html>
效果圖:

2:自定義折疊面板圖標(biāo)
<!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="#">標(biāo)題 1</a></h3>
<div>
這是一段內(nèi)容<br />
</div>
<h3><a href="#">標(biāo)題 2</a></h3>
<div>
這是一段內(nèi)容<br />
</div>
</div>
</div>
<input id="toggle" value="切換圖標(biāo)" type="button" />
</body>
</html>
程序效果圖:

3:能自定義排列順序的折疊面板
折疊面板可以作為分類項(xiàng)目的主面板來使用,因?yàn)椴僮髁?xí)慣,用戶通常希望能夠自定義面板的位置
<!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" //指定標(biāo)題為該面板容器下的div標(biāo)簽中的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="#">標(biāo)題 1</a></h4>
<div>
這是一段內(nèi)容<br />
</div>
</div>
<div>
<h4><a href="#">標(biāo)題 2</a></h4>
<div>
這是一段內(nèi)容<br />
</div>
</div>
<div>
<h4><a href="#">標(biāo)題 3</a></h4>
<div>
這是一段內(nèi)容<br />
</div>
</div>
</div>
</div>
</body>
</html>

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 /* 設(shè)置為自動(dòng)填充父元素空間 */
});
/* 將容器設(shè)置為可改變大小的,
最小高度為150,
并且在改變大小的時(shí)候調(diào)用折疊面板的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為面板標(biāo)題,div為面板主體 -->
<div id="accordion">
<h3><a href="#">標(biāo)題 1</a></h3>
<div>
這是第一段內(nèi)容<br />
<ul>
<li>列表項(xiàng) 1</li><li>列表項(xiàng) 2</li><li>列表項(xiàng) 3</li>
</ul>
</div>
<h3><a href="#">標(biāo)題 2</a></h3>
<div>
這是第二段內(nèi)容<br />這是第二段內(nèi)容<br />
</div>
<h3><a href="#">標(biāo)題 3</a></h3>
<div>
這是第三段內(nèi)容<br />這是第三段內(nèi)容<br />這是第三段內(nèi)容<br />
</div>
</div>
<!-- 這個(gè)span標(biāo)記將顯示一個(gè)拖動(dòng)柄 -->
<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;">
這是另一個(gè)模塊,將隨著折疊面板容器的大小而改變位置
</div>
</body>
</html>
效果圖:

上述代碼首先將折疊面板初始化為可自動(dòng)填充父元素的組件,然后設(shè)置容器可以自動(dòng)調(diào)整大小,并在容器控件大小改變時(shí)調(diào)用折疊面板的resize方法,
最后實(shí)現(xiàn)一起調(diào)整大小的效果
5:折疊面板的事件
change和changestart事件
$("#accordion").accordion({
change: function(event, ui) {
},
changestart: function(event, ui) {
}
})
*event: 觸發(fā)的事件對象
*ui:視圖對象,有4個(gè)屬性,即newHeader, 表示當(dāng)前面板標(biāo)題;oldHeader,表示前一個(gè)面板的標(biāo)題,newContent:表示當(dāng)前面板內(nèi)容;oldContent, 表示前一個(gè)面板內(nèi)容,
這些返回的都是jQuery對象
與此同時(shí),將自動(dòng)折疊隱藏其他面板
$(selector).accordion(options);
options可以選擇的屬性為:
disabled, active, animated, autoHeight, clearStyle, collapsible, event, fillSpace, header, icons, navigation, navigationFilter
簡單實(shí)例:
復(fù)制代碼 代碼如下:
<!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="#">標(biāo)題 1</a></h3>
<div>
這是一段較少的內(nèi)容<br />
</div>
<h3><a href="#">標(biāo)題 2</a></h3>
<div>
這是一段很長的內(nèi)容<br />這是一段很長的內(nèi)容<br />
這是一段很長的內(nèi)容<br />這是一段很長的內(nèi)容<br />
這是一段很長的內(nèi)容<br />這是一段很長的內(nèi)容<br />
這是一段很長的內(nèi)容<br />這是一段很長的內(nèi)容<br />
</div>
</div>
<div style="margin:8px 0; padding:10px; height:50px; border:solid 1px #aaa;">
這是另一個(gè)模塊,將隨著折疊面板的大小而改變位置
</div>
</body>
</html>
效果圖:

2:自定義折疊面板圖標(biāo)
復(fù)制代碼 代碼如下:
<!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="#">標(biāo)題 1</a></h3>
<div>
這是一段內(nèi)容<br />
</div>
<h3><a href="#">標(biāo)題 2</a></h3>
<div>
這是一段內(nèi)容<br />
</div>
</div>
</div>
<input id="toggle" value="切換圖標(biāo)" type="button" />
</body>
</html>
程序效果圖:

3:能自定義排列順序的折疊面板
折疊面板可以作為分類項(xiàng)目的主面板來使用,因?yàn)椴僮髁?xí)慣,用戶通常希望能夠自定義面板的位置
復(fù)制代碼 代碼如下:
<!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" //指定標(biāo)題為該面板容器下的div標(biāo)簽中的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="#">標(biāo)題 1</a></h4>
<div>
這是一段內(nèi)容<br />
</div>
</div>
<div>
<h4><a href="#">標(biāo)題 2</a></h4>
<div>
這是一段內(nèi)容<br />
</div>
</div>
<div>
<h4><a href="#">標(biāo)題 3</a></h4>
<div>
這是一段內(nèi)容<br />
</div>
</div>
</div>
</div>
</body>
</html>

4:折疊面板的方法
destroy, disable, enable, option, widget, activate, resize
$('#accordion').accordion("activate", 2);
復(fù)制代碼 代碼如下:
<!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 /* 設(shè)置為自動(dòng)填充父元素空間 */
});
/* 將容器設(shè)置為可改變大小的,
最小高度為150,
并且在改變大小的時(shí)候調(diào)用折疊面板的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為面板標(biāo)題,div為面板主體 -->
<div id="accordion">
<h3><a href="#">標(biāo)題 1</a></h3>
<div>
這是第一段內(nèi)容<br />
<ul>
<li>列表項(xiàng) 1</li><li>列表項(xiàng) 2</li><li>列表項(xiàng) 3</li>
</ul>
</div>
<h3><a href="#">標(biāo)題 2</a></h3>
<div>
這是第二段內(nèi)容<br />這是第二段內(nèi)容<br />
</div>
<h3><a href="#">標(biāo)題 3</a></h3>
<div>
這是第三段內(nèi)容<br />這是第三段內(nèi)容<br />這是第三段內(nèi)容<br />
</div>
</div>
<!-- 這個(gè)span標(biāo)記將顯示一個(gè)拖動(dòng)柄 -->
<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;">
這是另一個(gè)模塊,將隨著折疊面板容器的大小而改變位置
</div>
</body>
</html>
效果圖:

上述代碼首先將折疊面板初始化為可自動(dòng)填充父元素的組件,然后設(shè)置容器可以自動(dòng)調(diào)整大小,并在容器控件大小改變時(shí)調(diào)用折疊面板的resize方法,
最后實(shí)現(xiàn)一起調(diào)整大小的效果
5:折疊面板的事件
change和changestart事件
復(fù)制代碼 代碼如下:
$("#accordion").accordion({
change: function(event, ui) {
},
changestart: function(event, ui) {
}
})
*event: 觸發(fā)的事件對象
*ui:視圖對象,有4個(gè)屬性,即newHeader, 表示當(dāng)前面板標(biāo)題;oldHeader,表示前一個(gè)面板的標(biāo)題,newContent:表示當(dāng)前面板內(nèi)容;oldContent, 表示前一個(gè)面板內(nèi)容,
這些返回的都是jQuery對象
相關(guān)文章
jQuery+CSS3實(shí)現(xiàn)點(diǎn)贊功能
本篇文章主要介紹了jQuery+CSS3實(shí)現(xiàn)點(diǎn)贊功能的示例代碼。具有很好的參考價(jià)值。下面跟著小編一起來看下吧2017-03-03
jQuery實(shí)現(xiàn)圣誕節(jié)禮物傳送(花式輪播)
本文主要對jQuery實(shí)現(xiàn)圣誕節(jié)禮物傳送的方法、思路進(jìn)行詳細(xì)介紹,具有很好的參考價(jià)值,需要的朋友一起來看下吧2016-12-12
jQuery 1.5最新版本的改進(jìn)細(xì)節(jié)分析
jQuery 1.5 beta1出來了,從學(xué)習(xí)跟進(jìn)上來說,這一次已經(jīng)比較晚了(我竟然不知道1.5什么時(shí)候出的alpha,就這么beta了)。2011-01-01
jQuery oLoader實(shí)現(xiàn)的加載圖片和頁面效果
我們使用jQuery的ajax在頁面中就像使用iframe一樣加載其他頁面內(nèi)容,今天我給大家分享一個(gè)名叫jQuery oLoader的插件,該插件還集成了oPageLoader,可以輕松實(shí)現(xiàn)加載圖片和頁面的漂亮效果。2015-03-03
jQuery+ajax實(shí)現(xiàn)動(dòng)態(tài)添加表格tr td功能示例
這篇文章主要介紹了jQuery+ajax實(shí)現(xiàn)動(dòng)態(tài)添加表格tr td功能,結(jié)合實(shí)例形式分析了jQuery基于ajax動(dòng)態(tài)創(chuàng)建頁面table元素相關(guān)操作技巧,需要的朋友可以參考下2018-04-04
Jquery動(dòng)態(tài)添加及刪除頁面節(jié)點(diǎn)元素示例代碼
這篇文章主要介紹了Jquery如何動(dòng)態(tài)添加及刪除頁面節(jié)點(diǎn)元素,示例代碼如下,需要的朋友不要錯(cuò)過2014-06-06
Jquery全選與反選點(diǎn)擊執(zhí)行一次的解決方案
在做項(xiàng)目時(shí)遇到一個(gè)bug,checkbox全選與反選功能,只能點(diǎn)擊一次,再點(diǎn)就不起作用了,為了解決此問題,我查找了好多資料,下面把具體解決方案整理分享給大家,需要的朋友可以參考下2015-08-08

