基於jQuery開發的手風琴插件 jquery.accordion.js
1、插件代碼
少說多做,基於jQuery的手風琴插件jquery.accordion.js的代碼:
/*
* 手風琴插件說明:
* 1、treeTrunk對應樹榦
* 2、treeLeaf對應樹葉,html代碼結構一般為treeTrunk.next元素
* 3、treeTrunkActiveClass是樹榦展開後添加的樣式
* 4、treeType是觸發手風琴效果的事件形式
* 5、treeIs 載入後是否將第一個樹榦展開
* 6、speed 展開、閉合動畫執行時間
* 7、插件命名為jquery.accordion.js
*/
;
(function($) {
$.fn.accordion = function(options) {
//插件默認值
var defaultVal = {
treeTrunk: "a", //樹榦--點擊需要展開的元素
treeLeaf: "ul", //樹葉--點擊展開元素後顯示的內容
treeTrunkActiveClass: "active", //當前樹榦--當前展開樹榦元素的添加的樣式
treeType: "click", //觸發展開/關閉的事件類型:click,mouseenter,mouseleave,mouseout,mouseover
treeIs: true, //頁面載入後是否顯示第一個樹榦的樹葉內容
speed:500//動畫執行時間
};
var obj = $.extend(defaultVal, options); //合併參數
return this.each(function {
var selObject = $(this); //獲取觸發手風琴事件對象
var selTreeTrunk = selObject.find(obj.treeTrunk); //獲取當前對象下的樹榦元素
var selTreeLeaf = selTreeTrunk.next(obj.treeLeaf); //獲取當前對象下的樹榦元素下的樹葉
//綁定事件
selTreeTrunk.bind(obj.treeType, function {
//判斷樹葉是否顯示
if($(this).next(selTreeLeaf).is(":visible")) {
//關閉樹葉
$(this).next(selTreeLeaf).slideUp(obj.speed);
//移除active樣式
$(this).removeClass(obj.treeTrunkActiveClass);
} else {
//所有樹榦移除移除active樣式
selTreeTrunk.removeClass(obj.treeTrunkActiveClass);
//當前樹榦添加active樣式
$(this).addClass(obj.treeTrunkActiveClass);
//所有樹葉閉合
selTreeTrunk.next(selTreeLeaf).slideUp(obj.speed);
//當前樹榦下的樹葉展開
$(this).next(selTreeLeaf).slideDown(obj.speed);
}
});
//頁面載入後觸發第一個樹榦顯示樹葉內容
if(obj.treeIs) {
selTreeTrunk.eq(0).trigger(obj.treeType);
}
});
}
})(jQuery);
2、插件使用
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>基於jQuery的手風琴插件</title>
<style type="text/css">
* {
padding: 0;
margin: 0;
list-style: none;
}
ul.sidebar-menu {
width: 200px;
padding: 10px;
}
ul.sidebar-menu>li>a {
font-size: 16px;
line-height: 20px;
color: #000;
text-decoration: none;
}
ul.sidebar-menu>li>a:hover,
ul.sidebar-menu>li>a.active {
background-color: #675C7C;
color: white;
}
ul.sidebar-menu>li>ul {
display: none;
}
ul.sidebar-menu>li>ul>li>a {
display: inline-block;
font-size: 14px;
line-height: 18px;
color: #000;
text-decoration: none;
}
</style>
</head>
<body>
<ul class="sidebar-menu">
<li class="treeview">
<a href="#">
標題1
</a>
<ul>
<li class="">
<a href="index.html">標題1-1</a>
</li>
<li>
<a href="index2.html">標題1-2</a>
</li>
</ul>
</li>
<li class="treeview">
<a href="#">
標題2
</a>
<ul>
<li class="">
<a href="index.html">標題2-1</a>
</li>
<li>
<a href="index2.html">標題2-2</a>
</li>
</ul>
</li>
</ul>
<script src="https://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<script src="js/jquery.accordion.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
$(function {
$(".sidebar-menu").accordion({
//獲取樹榦元素
treeTrunk: ".treeview a"
})
})
</script>
</body>
</html>
說明:
(1)、jquery.accordion.js插件的路徑要配置對。
(2)、可以自己編輯頁面的展示樣式,如active樣式。
3、展示效果:
請直接運行上述代碼查看插件效果。


※withCredentials 屬性
※消息隊列NetMQ 原理分析5-StreamEngine、Encord和Decord
※Python爬蟲番外篇之關於登錄
※分享 android 源碼
※python函數(5):迭代器和生成器
TAG:科技優家 |
※Voice of Sakura 手風琴在響
※Bvlgari蛇頭包 蛇頭風琴包 鏈條包 寶格麗Serpenti Forever系列單肩包 斜挎包
※拼團 | in and on 風琴褶下擺長袖襯衫
※拆解報告:Baseus倍思口風琴五合一HUB智能轉換器(UCN3266)
※Chanel單肩包 鏈條包 香奈兒斜挎包 Khanel 17秋冬風琴包 Chanel鏈條包 斜挎包 香奈兒單肩包
※Nord Piano 3古典曲目演示:貝森多夫130直立式鋼琴和教堂風琴
※炫彩塑料風琴包你見過嗎,唐嫣創新穿法,范爺入夏的第一套look
※Chanel蛇皮風琴包 香奈兒鏈條包單肩包 香奈兒女包
※HTML6摺疊菜單 手風琴菜單
※prada普拉達風琴包 十字紋手提包 斜挎包 普拉達女士單肩包
※投稿作品:Q版T34「管風琴」多管火箭炮
※劍俠情緣:古風琴娘cos 燙了頭髮趕時髦的漂亮姐姐 很美!
※被稱為"斯大林的管風琴",一次可齊射16發的喀秋莎火箭炮
※被稱為"斯大林的管風琴",一次可齊射16發的喀秋莎火箭炮
※YSL聖羅蘭 單肩包 YSL一款風琴褶包包 包中仙子一樣的存在 時刻讓你仙氣 YSL聖羅蘭 手提包
※除了希特勒電鋸MG42外,德軍還有一款神器,希特勒的管風琴
※美麗的「風琴」圍脖的織法,有縫合的方法
※YSL聖羅蘭手提包 聖羅蘭平紋款風琴包 聖羅蘭單肩包
※趨勢警報 | 流動的風琴褶
※我家那件進口貨|外公從二戰戰場上背回來的手風琴,成了我的啟蒙