Posted in Javascript onJuly 30, 2013
修改了一下数据格式,是json和数组或者混合型的数据都通用,不用特定key等
<!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="http://d1.lashouimg.com/static/js/release/jquery-1.4.2.min.js"></script> <title>JS无级树树形菜单,json格式,数组格式通用</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 = { "navnums": { "0": "8051", "4": "4969", "8": "206", "5": "126", "9": "2174" }, "hotwords": "美食", "mvonline": [9, 8, [9, 8, 7, 6, 5, 4], 6, 5, 4], "district_online": "1", "zone_online": "1", "subway_online": "1", "city_online": "1" }; /*递归实现获取无级树数据并生成DOM结构*/ var str = ""; var forTree = function (o) { var urlstr = ""; var keys = new Array(); for (var key in o) { keys.push(key); } for (var j = 0; j < keys.length; j++) { k = keys[j]; if (typeof o[k] == "object") { urlstr = "<div><span>" + k + "</span><ul>"; } else { urlstr = "<div><span>" + k + "=" + o[k] + "</span><ul>"; } str += urlstr; var kcn = 0; if (typeof o[k] == "object") { for (var kc in o[k]) { kcn++; } } if (kcn > 0) { forTree(o[k]); } str += "</ul></div>"; } 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>
JS无限极树形菜单,json格式、数组格式通用示例
声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。
Reply on: @reply_date@
@reply_contents@