json+jQuery實現(xiàn)的無限級樹形菜單效果代碼
本文實例講述了json+jQuery實現(xiàn)的無限級樹形菜單效果代碼。分享給大家供大家參考。具體如下:
這里演示json樹形菜單,JS無級樹樹形菜單,引入了jQuery插件,使用遞歸實現(xiàn)獲取無級樹數(shù)據(jù)并生成DOM結(jié)構(gòu),可以在JSON數(shù)據(jù)里 擴(kuò)展無限級 看結(jié)構(gòu)就明白。
先來看看運行效果截圖:

在線演示地址如下:
http://demo.jb51.net/js/2015/jquery-json-tree-style-menu-codes/
具體代碼如下:
<!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=utf-8" />
<script type="text/javascript" src="jquery-1.6.2.min.js"></script>
<title>JS無級樹樹形菜單</title>
<style type="text/css">
.menuTree{ margin-left:-30px;}
.menuTree div{ padding-left:30px;}
.menuTree div ul{ overflow:hidden; display:none; height:auto;}
.menuTree span{ display:block; height:25px; line-height:25px; padding-left:5px; margin:1px 0; cursor:pointer; border-bottom:1px solid #CCC;}
.menuTree span:hover{ background-color:#e6e6e6; color:#cf0404;}
.menuTree a{ color:#333; text-decoration:none;}
.menuTree a:hover{ color:#06F;}
.btn{ height:30px; margin-top:10px; border-bottom:1px solid #CCC;}
</style>
</head>
<body>
<div class="btn">
<input name="" type="button" id="btn_open" value="全部展開" />
<input name="" type="button" id="btn_close" value="全部收縮" />
</div>
<div id="menuTree" class="menuTree"></div>
</body>
</html>
<script type="text/javascript">
var json = [{"name":"*a","list":[
{"name":"**a","url":"#a1"},
{"name":"**aa","list":[
{"name":"***a","url":"#a11"}, {"name":"***aa","list":[ {"name":"****a","url":"#a111"}, {"name":"****aa","list":[ {"name":"*****a","url":"#a1111"}, {"name":"*****aa","url":"#a1112"}
]}
]},
{"name":"***aaa","url":"#a13"},
{"name":"***aaaa","url":"#a14"}
]
},
{"name":"**a","url":"#a3"}
]
},
{"name":"*b","list":[
{"name":"**b","url":"#b1"},
{"name":"**bb","list":[
{"name":"****b","url":"#b111"},
{"name":"****bb","url":"#b112"}
]
},
]
},
{"name":"*c","list":[
{"name":"**c","url":"#c1"},
{"name":"**cc","url":"#c2"}
]
},
{"name":"*d"}
]
/*遞歸實現(xiàn)獲取無級樹數(shù)據(jù)并生成DOM結(jié)構(gòu)*/
var str = "";
var forTree = function(o){
for(var i=0;i<o.length;i++){
var urlstr = "";
try{
if(typeof o[i]["url"] == "undefined"){
urlstr = "<div><span>"+ o[i]["name"] +"</span><ul>";
}else{
urlstr = "<div><span><a href="+ o[i]["url"] +">"+ o[i]["name"] +"</a></span><ul>";
}
str += urlstr;
if(o[i]["list"] != null){
forTree(o[i]["list"]);
}
str += "</ul></div>";
}catch(e){}
}
return str;
}
/*添加無級樹*/
document.getElementById("menuTree").innerHTML = forTree(json);
/*樹形菜單*/
var menuTree = function(){
//給有子對象的元素加[+-]
$("#menuTree ul").each(function(index, element) {
var ulContent = $(element).html();
var spanContent = $(element).siblings("span").html();
if(ulContent){
$(element).siblings("span").html("[+] " + spanContent)
}
});
$("#menuTree").find("div span").click(function(){
var ul = $(this).siblings("ul");
var spanStr = $(this).html();
var spanContent = spanStr.substr(3,spanStr.length);
if(ul.find("div").html() != null){
if(ul.css("display") == "none"){
ul.show(300);
$(this).html("[-] " + spanContent);
}else{
ul.hide(300);
$(this).html("[+] " + spanContent);
}
}
})
}()
/*展開*/
$("#btn_open").click(function(){
$("#menuTree ul").show(300);
curzt("-");
})
/*收縮*/
$("#btn_close").click(function(){
$("#menuTree ul").hide(300);
curzt("+");
})
function curzt(v){
$("#menuTree span").each(function(index, element) {
var ul = $(this).siblings("ul");
var spanStr = $(this).html();
var spanContent = spanStr.substr(3,spanStr.length);
if(ul.find("div").html() != null){
$(this).html("["+ v +"] " + spanContent);
}
});
}
</script>
希望本文所述對大家的jquery程序設(shè)計有所幫助。
- jquery實現(xiàn)自定義樹形表格的方法【自定義樹形結(jié)構(gòu)table】
- jQuery 利用ztree實現(xiàn)樹形表格的實例代碼
- 推薦8款jQuery輕量級樹形Tree插件
- jQuery樹形控件zTree使用小結(jié)
- jquery ztree實現(xiàn)下拉樹形框使用到了json數(shù)據(jù)
- jquery實現(xiàn)樹形菜單完整代碼
- jQuery ztree實現(xiàn)動態(tài)樹形多選菜單
- jQuery 樹形結(jié)構(gòu)的選擇器
- 輕松學(xué)習(xí)jQuery插件EasyUI EasyUI創(chuàng)建樹形菜單
- jQuery實現(xiàn)樹形員工信息表
相關(guān)文章
jquery動畫3.創(chuàng)建一個帶遮罩效果的圖片走廊
今天我們要完成的是一個帶有遮罩效果(補間動畫)的圖片走廊jquery插件:jquery.tranzify.js2012-08-08
深入學(xué)習(xí)jQuery Validate表單驗證
這篇文章主要針對jQuery Validate表單驗證為大家進(jìn)行詳細(xì)介紹,如何在class屬性里面并定義錯誤信息的提示,感興趣的小伙伴們可以參考一下2016-01-01
jquery觸發(fā)a標(biāo)簽跳轉(zhuǎn)事件示例代碼
本文為大家詳細(xì)介紹下如何使用jquery觸發(fā)a標(biāo)簽的跳轉(zhuǎn)事件,感興趣的朋友可以參考下哈,希望對大家有所幫助2013-07-07
jquery實現(xiàn)商品sku多屬性選擇功能(商品詳情頁)
這篇文章主要介紹了jquery實現(xiàn)商品sku多屬性選擇功能(商品詳情頁),文中簡單給大家介紹了sku的概念,需要的朋友可以參考下2019-12-12
Jquery實現(xiàn)點擊切換圖片并隱藏顯示內(nèi)容(2種方法實現(xiàn))
電腦屏幕大小是固定的,那么如何在有限的空間放更多的內(nèi)容呢,jquery的tab切換式瀏覽卻可以解決這個問題2013-04-04

