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

在線演示地址如下:
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無(wú)級(jí)樹(shù)樹(shù)形菜單</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="全部展開(kāi)" />
<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"}
]
/*遞歸實(shí)現(xiàn)獲取無(wú)級(jí)樹(shù)數(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;
}
/*添加無(wú)級(jí)樹(shù)*/
document.getElementById("menuTree").innerHTML = forTree(json);
/*樹(shù)形菜單*/
var menuTree = function(){
//給有子對(duì)象的元素加[+-]
$("#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);
}
}
})
}()
/*展開(kāi)*/
$("#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>
希望本文所述對(duì)大家的jquery程序設(shè)計(jì)有所幫助。
- jquery實(shí)現(xiàn)自定義樹(shù)形表格的方法【自定義樹(shù)形結(jié)構(gòu)table】
- jQuery 利用ztree實(shí)現(xiàn)樹(shù)形表格的實(shí)例代碼
- 推薦8款jQuery輕量級(jí)樹(shù)形Tree插件
- jQuery樹(shù)形控件zTree使用小結(jié)
- jquery ztree實(shí)現(xiàn)下拉樹(shù)形框使用到了json數(shù)據(jù)
- jquery實(shí)現(xiàn)樹(shù)形菜單完整代碼
- jQuery ztree實(shí)現(xiàn)動(dòng)態(tài)樹(shù)形多選菜單
- jQuery 樹(shù)形結(jié)構(gòu)的選擇器
- 輕松學(xué)習(xí)jQuery插件EasyUI EasyUI創(chuàng)建樹(shù)形菜單
- jQuery實(shí)現(xiàn)樹(shù)形員工信息表
相關(guān)文章
jquery動(dòng)畫3.創(chuàng)建一個(gè)帶遮罩效果的圖片走廊
今天我們要完成的是一個(gè)帶有遮罩效果(補(bǔ)間動(dòng)畫)的圖片走廊jquery插件:jquery.tranzify.js2012-08-08
jquery實(shí)現(xiàn)手機(jī)號(hào)碼選號(hào)的方法
這篇文章主要介紹了jquery實(shí)現(xiàn)手機(jī)號(hào)碼選號(hào)的方法,涉及jquery針對(duì)手機(jī)號(hào)碼的分析與篩選技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-07-07
深入學(xué)習(xí)jQuery Validate表單驗(yàn)證
這篇文章主要針對(duì)jQuery Validate表單驗(yàn)證為大家進(jìn)行詳細(xì)介紹,如何在class屬性里面并定義錯(cuò)誤信息的提示,感興趣的小伙伴們可以參考一下2016-01-01
jquery觸發(fā)a標(biāo)簽跳轉(zhuǎn)事件示例代碼
本文為大家詳細(xì)介紹下如何使用jquery觸發(fā)a標(biāo)簽的跳轉(zhuǎn)事件,感興趣的朋友可以參考下哈,希望對(duì)大家有所幫助2013-07-07
jquery實(shí)現(xiàn)商品sku多屬性選擇功能(商品詳情頁(yè))
這篇文章主要介紹了jquery實(shí)現(xiàn)商品sku多屬性選擇功能(商品詳情頁(yè)),文中簡(jiǎn)單給大家介紹了sku的概念,需要的朋友可以參考下2019-12-12
jQuery UI插件實(shí)現(xiàn)百度提詞器效果
這篇文章主要介紹了jQuery UI插件實(shí)現(xiàn)百度提詞器效果,每個(gè)輸入框中有相應(yīng)的文字提示,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-11-11
jquery+CSS3模擬Path2.0動(dòng)畫菜單效果代碼
這篇文章主要介紹了jquery+CSS3模擬Path2.0動(dòng)畫菜單效果代碼,涉及jquery鼠標(biāo)click點(diǎn)擊事件及頁(yè)面元素樣式動(dòng)態(tài)變換的實(shí)現(xiàn)技巧,需要的朋友可以參考下2015-08-08
Jquery實(shí)現(xiàn)點(diǎn)擊切換圖片并隱藏顯示內(nèi)容(2種方法實(shí)現(xiàn))
電腦屏幕大小是固定的,那么如何在有限的空間放更多的內(nèi)容呢,jquery的tab切換式瀏覽卻可以解決這個(gè)問(wèn)題2013-04-04

