博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
构建简单的json树形菜单
阅读量:5307 次
发布时间:2019-06-14

本文共 2854 字,大约阅读时间需要 9 分钟。

json结构:

var Menu = [{            tit:"一级菜单",            submenu:[{                tit:"二级菜单",                url:"",                func:function(){                    alert('what do you want to do?');                }            },{                tit:"二级菜单",                func:function(){                    alert('do what?');                },                submenu:[{                    tit:"三级菜单",                    url:"",                    submenu:[{                        tit:"四级菜单",                        url:""                    },{                        tit:"四级菜单",                        url:""                    }]                },{                    tit:"三级菜单",                    url:""                }]            }]        },{            tit:"一级菜单",            submenu:[{                tit:"二级菜单",                url:""            },{                tit:"二级菜单",                submenu:[{                    tit:"三级菜单",                    url:""                },{                    tit:"三级菜单",                    url:""                }]            }]        }];
View Code

构建菜单处理函数

/*     * @构建树形菜单     * @arrJson:json数据     * @container:菜单容器     */    function menuTree(jsonArr,container,treeId){        var oText,oUrl;        var oUl = document.createElement('ul');        for(var i = 0 ;i < jsonArr.length; i++){            var oLi = document.createElement('li');            oUrl = jsonArr[i].url || "javascript:void(0)";            oText = jsonArr[i].tit;            if(jsonArr[i].submenu){                 oLi.innerHTML =''+oText+'';                  menuTree(jsonArr[i].submenu,oLi);//递归构建子菜单            }else{                oLi.innerHTML = ''+oText+'';            }            //自定义函数            if(typeof jsonArr[i].func =="function"){                 oLi.getElementsByTagName('a')[0].func = jsonArr[i].func;                oLi.getElementsByTagName('a')[0].οnclick=function(){                    this.func();                }            }            oUl.appendChild(oLi);        }        //最外层容器事件委托        if(treeId){            document.getElementById(treeId).onclick = function(e){                var event = e || window.event;                var target = event.target||event.srcElement;                var next = target.nextSibling;                if(target.nodeName.toLowerCase() == "a"){                    if(next){                        if(next.style.display=="" || next.style.display=="block"){                            next.style.display="none";                        }else{                            next.style.display="block";                        }                    }                }            }        }        container.appendChild(oUl);    }
View Code

完整demo:

    
json树形菜单

构建json树形菜单

View Code

效果图:

 

完整实例:

 

转载于:https://www.cnblogs.com/GeniusLyzh/p/4064714.html

你可能感兴趣的文章
react 避免重复渲染
查看>>
Struts2搭建demo
查看>>
codeforces 668C - Little Artem and Random Variable
查看>>
build-your-microservices-api-with-swagger
查看>>
CF807
查看>>
第一个内核模块,Hello Kernel的编写历程
查看>>
解决Get请求的长度限制
查看>>
Java:并发不易,先学会用
查看>>
JavaScritp设计模式1 ----- 单件模式
查看>>
弄个知乎的粒子动态背景_实践particles.js
查看>>
js定时器
查看>>
完美解决linux系统sublime不能输入中文
查看>>
数据结构算法 (树 的基本算法)
查看>>
smb
查看>>
Oracle中的SQL分页查询原理和方法详解
查看>>
多线程编程(六)-Executor与ThreadPoolExecutor的使用
查看>>
[LeetCode#259] 3Sum Smaller
查看>>
[主席树]ZOJ2112 && BZOJ1901 Dynamic Rankings
查看>>
打水漂_洛谷U3553_不知道怎么分类的分类
查看>>
jquery 选择器,模糊匹配
查看>>