JS无限极树形菜单,json格式、数组格式通用示例


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>
Javascript 相关文章推荐
清除网页历史记录,屏蔽后退按钮!
Dec 22 Javascript
滚动条变色 隐藏滚动条与双击网页自动滚屏显示代码
Dec 28 Javascript
!DOCTYPE声明对JavaScript的影响分析
Apr 12 Javascript
javascrpt绑定事件之匿名函数无法解除绑定问题
Dec 06 Javascript
js 输出内容到新窗口具体实现代码
May 31 Javascript
JavaScript中“过于”犀利地for/in循环使用示例
Oct 22 Javascript
浅谈jQuery 选择器和dom操作
Jun 07 Javascript
微信小程序 template模板详解及实例代码
Mar 09 Javascript
详解JS中遍历语法的比较
Apr 07 Javascript
JS实现仿UC浏览器前进后退效果的实例代码
Jul 17 Javascript
vue引入新版 vue-awesome-swiper插件填坑问题
Jan 25 Javascript
vue2.0项目实现路由跳转的方法详解
Jun 21 Javascript
js中widow.open()方法使用详解
Jul 30 #Javascript
Extjs NumberField后面加单位实现思路
Jul 30 #Javascript
Js中获取frames中的元素示例代码
Jul 30 #Javascript
js中的屏蔽的使用示例
Jul 30 #Javascript
使用js正则控制input标签只允许输入的值
Jul 29 #Javascript
js为鼠标添加右击事件防止默认的右击菜单弹出
Jul 29 #Javascript
js保留两位小数使用toFixed实现
Jul 29 #Javascript
You might like
通过html表格发电子邮件
2006/10/09 PHP
php实现简单洗牌算法
2013/06/18 PHP
开启PHP Static 关键字之旅模式
2015/11/13 PHP
thinkphp5.0自定义验证规则使用方法
2017/11/16 PHP
PHP获取数组中指定的一列实例
2017/12/27 PHP
提高代码性能技巧谈—以创建千行表格为例
2006/07/01 Javascript
js substr、substring和slice使用说明小记
2011/09/15 Javascript
JS 模态对话框和非模态对话框操作技巧汇总
2013/04/15 Javascript
图片上传插件jquery.uploadify详解
2013/11/15 Javascript
javascript实现table选中的行以指定颜色高亮显示的方法
2015/05/13 Javascript
jquery简单插件制作(fn.extend)完整实例
2016/05/24 Javascript
JQuery对ASP.NET MVC数据进行更新删除
2016/07/13 Javascript
js H5 canvas投篮小游戏
2016/08/18 Javascript
基于JS实现的随机数字抽签实例
2016/12/08 Javascript
vue.js 获取当前自定义属性值
2017/06/01 Javascript
自适应布局meta标签中viewport、content、width、initial-scale、minimum-scale、maximum-scale总结
2017/08/18 Javascript
npm全局模块卸载及默认安装目录修改方法
2018/05/15 Javascript
[03:05]《我与DAC》之xiao8:DAC与BG
2018/03/27 DOTA
python实现定时提取实时日志程序
2018/06/22 Python
对python mayavi三维绘图的实现详解
2019/01/08 Python
如何基于python把文字图片写入word文档
2020/07/31 Python
利用Python优雅的登录校园网
2020/10/21 Python
Python获取android设备cpu和内存占用情况
2020/11/15 Python
Python抖音快手代码舞(字符舞)的实现方法
2021/02/07 Python
H5离线存储Manifest原理及使用
2020/04/28 HTML / CSS
教师党员思想汇报
2014/01/06 职场文书
内蒙古鄂尔多斯市市长寄语
2014/04/10 职场文书
母校寄语大全
2014/04/10 职场文书
班主任与学生安全责任书
2014/07/25 职场文书
销售员未完成销售业绩的检讨书
2014/10/12 职场文书
高中校园广播稿
2014/10/21 职场文书
南湾猴岛导游词
2015/02/09 职场文书
被告答辩状范文
2015/05/22 职场文书
2016党员读书思廉心得体会
2016/01/23 职场文书
2016年小学党支部创先争优活动总结
2016/04/05 职场文书
redis实现共同好友的思路详解
2021/05/26 Redis