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 相关文章推荐
javascript编程起步(第六课)
Feb 27 Javascript
js 深拷贝函数
Dec 04 Javascript
JQuery打造PHP的AJAX表单提交实例
Nov 03 Javascript
javascript实现限制上传文件大小
Feb 06 Javascript
jQuery制作全屏宽度固定高度轮播图(实例讲解)
Jul 08 jQuery
关于javascript sort()排序你可能忽略的一点理解
Jul 18 Javascript
iframe与主框架跨域相互访问实现方法
Sep 14 Javascript
JavaScript屏蔽Backspace键的实现代码
Nov 02 Javascript
jQuery简单判断值是否存在于数组中的方法示例
Apr 17 jQuery
vue下history模式刷新后404错误解决方法
Aug 18 Javascript
微信小程序上线发布流程图文详解
May 06 Javascript
使用Vue-cli3.0创建的项目 如何发布npm包
Oct 10 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
PHP IE中下载附件问题解决方法
2014/01/07 PHP
Codeigniter实现处理用户登录验证后的URL跳转
2014/06/12 PHP
php实现Linux服务器木马排查及加固功能
2014/12/29 PHP
PHP+ajax实现二级联动菜单功能示例
2018/08/10 PHP
学习ExtJS Panel常用方法
2009/10/07 Javascript
jQuery的实现原理的模拟代码 -2 数据部分
2010/08/01 Javascript
基于jquery的loading 加载提示效果实现代码
2011/09/01 Javascript
js取两个数组的交集|差集|并集|补集|去重示例代码
2013/08/07 Javascript
jquery 删除cookie失效的解决方法
2013/11/12 Javascript
解析JavaScript中instanceof对于不同的构造器或许都返回true
2013/12/03 Javascript
javascript中全局对象的parseInt()方法使用介绍
2013/12/19 Javascript
常见的jQuery选择器汇总
2014/11/24 Javascript
JavaScript实现图片轮播的方法
2015/07/31 Javascript
BootStrap智能表单实战系列(八)表单配置json详解
2016/06/13 Javascript
Bootstrap fileinput组件封装及使用详解
2017/03/10 Javascript
node.js平台下利用cookie实现记住密码登陆(Express+Ejs+Mysql)
2017/04/26 Javascript
在Express中提供静态文件的实现方法
2019/10/17 Javascript
jQuery操作选中select下拉框的值代码实例
2020/02/07 jQuery
[02:19]DOTA选手解说齐贺岁
2018/02/11 DOTA
python使用in操作符时元组和数组的区别分析
2015/05/19 Python
Python爬虫文件下载图文教程
2018/12/23 Python
获取Pytorch中间某一层权重或者特征的例子
2019/08/17 Python
tensorflow指定CPU与GPU运算的方法实现
2020/04/21 Python
python zip()函数的使用示例
2020/09/23 Python
用React加CSS3实现微信拆红包动画效果
2017/03/13 HTML / CSS
H5仿微信界面教程(一)
2017/07/05 HTML / CSS
三星印度官网:Samsung印度
2019/08/03 全球购物
夏威夷咖啡公司:Hawaii Coffee Company
2019/09/19 全球购物
青年教师典范事迹材料
2014/01/31 职场文书
协议书的格式
2014/04/23 职场文书
市级优秀班主任事迹材料
2014/05/13 职场文书
党员干部对十八届四中全会的期盼
2014/10/17 职场文书
毕业生就业推荐表自我评价
2015/03/02 职场文书
同事离别感言
2015/08/04 职场文书
虚拟机linux端mysql数据库无法远程访问的解决办法
2021/05/26 MySQL
python的netCDF4批量处理NC格式文件的操作方法
2022/03/21 Python