jQuery操作列表数据转成Json再输出为html dom树
jQuery 把列表数据转成Json再输出为如下 dom树
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | <div id= "menu" class = "lv1" > <ul class = "menu" > <li><a href= "#" class = "parent" ><span>aaaaaaaaaaa</span></a> <div class = "lv2" > <ul> <li><a href= "#" class = "parent" ><span>bbbbbbbbbbbbbbbb</span></a> <div class = "lv3" > <ul> <li><a href= "#" class = "parent" ><span>cccccccc</span></a> <div class = "lv4" > <ul> <li><a href= "#" ><span>ddddddddd</span></a></li> <li><a href= "#" ><span>dddddddd</span></a></li> <li><a href= "#" ><span>dddddddd</span></a></li> <li><a href= "#" ><span>dddddddd</span></a></li> <li><a href= "#" ><span>dddddddd</span></a></li> <li><a href= "#" ><span>dddddddd</span></a></li> </ul> </div> </li> <li><a href= "#" ><span>ccccccccccccc</span></a></li> <li><a href= "#" ><span>cccccccc</span></a></li> <li><a href= "#" ><span>cccccccccc</span></a></li> <li><a href= "#" ><span>cccccccccc</span></a></li> <li><a href= "#" ><span>ccccccccc</span></a></li> </ul> </div> </li> <li><a href= "#" class = "parent" ><span>bbbbbbbbbbbbbbbbb</span></a> <div class = "lv3" > <ul> <li><a href= "#" ><span>cccccccccccc</span></a></li> <li><a href= "#" ><span>cccccccccccc</span></a></li> </ul> </div> </li> </ul> </div> </li> </ul> </div> |
列表字段分别为Title Level Parent Content, JQ代码如下
/** * @create: nelson * @initTree 初始化生成菜单 * @调用方式 $("#menu").initTree(qListview); */ $.fn.extend({ initTree: function (qListview) { var This = $(this); var That = $(qListview); var keyArr = new Array(); var jsonArr = new Array(); That.find("thead th").each(function () { keyArr.push($(this).text()); }); That.find("tbody tr").each(function (index) { var jsonObj = {}; $(this).find("td").each(function (n) { jsonObj[keyArr[n]] = $(this).html(); }); jsonArr.push(jsonObj); }); This.attr('class', 'lv1').append('<ul class="menu"></ul>'); $.each(jsonArr, function (entryIndex, entry) { switch (entry['Level']) { case '1': This.find("ul").append('<li><a href="#"><span>' + entry['Title'] + '</span></a></li>'); break; case '2': This.find(">ul>li>a").each(function () { if (entry['Parent'] == $(this).text()) { $(this).attr('class', 'parent'); if ($(this).parent().find('.lv2').html() == undefined) { $(this).parent().append('<div class="lv2"><ul>' + '<li><a href="#"><span>' + entry['Title'] + '</span></a></li>' + '</ul></div>'); } else { $(this).parent().find('.lv2>ul').append('<li><a href="#"><span>' + entry['Title'] + '</span></a></li>'); } return false; } }); break; case '3': This.find(".lv2>ul>li>a").each(function () { if (entry['Parent'] == $(this).text()) { $(this).attr('class', 'parent'); if ($(this).parent().find('.lv3').html() == undefined) { $(this).parent().append('<div class="lv3"><ul>' + '<li><a href="#"><span>' + entry['Title'] + '</span></a></li>' + '</ul></div>'); } else { $(this).parent().find('.lv3>ul').append('<li><a href="#"><span>' + entry['Title'] + '</span></a></li>'); } return false; } }); break; case '4': This.find(".lv3>ul>li>a").each(function () { if (entry['Parent'] == $(this).text()) { $(this).attr('class', 'parent'); if ($(this).parent().find('.lv4').html() == undefined) { $(this).parent().append('<div class="lv4"><ul>' + '<li><a href="#"><span>' + entry['Title'] + '</span></a></li>' + '</ul></div>'); } else { $(this).parent().find('.lv4>ul').append('<li><a href="#"><span>' + entry['Title'] + '</span></a></li>'); } return false; } }); break; default: break; } }); return jsonArr; } });
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?