经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » JS/JS库/框架 » jQuery » 查看文章
jquery 根据后台传递过来的三维数组动态生成三级菜单
来源:cnblogs  作者:悦耳pn  时间:2019/10/24 9:18:20  对本文有异议
  1. 根据后台传递过来的三维数组动态生成三级菜单
  1. 1 <!DOCTYPE html>
  2. 2 <html lang="en">
  3. 3 <head>
  4. 4 <meta charset="UTF-8">
  5. 5 <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. 6 <meta http-equiv="X-UA-Compatible" content="ie=edge">
  7. 7 <title>动态树型导航</title>
  8. 8 <script src="jquery.min.js"></script>
  9. 9 <link rel="stylesheet" href="css/style.css">
  10. 10 <link rel="stylesheet" href="css/nav.css">
  11. 11 </head>
  12. 12 <body>
  13. 13 <div class="list">
  14. 14 <ul class="one">
  15. 15 <!-- <li>
  16. 16 <span class="anim"><img src="images/LOGO.png" alt="" width="20px"></span>
  17. 17 <a href="javrscript:void();" class="active">中国文联</a>
  18. 18 <ul class="hide two">
  19. 19 <li>&nbsp;&nbsp;&nbsp;
  20. 20 <span class="anim"><img src="images/LOGO.png" alt="" width="20px"></span>
  21. 21 <a href="javrscript:void();">综合部</a></li>
  22. 22 <li>&nbsp;&nbsp;&nbsp;
  23. 23 <span class="anim"><img src="images/LOGO.png" alt="" width="20px"></span>
  24. 24 <a href="javrscript:void();">大型活动部</a>
  25. 25 </li>
  26. 26 <li>&nbsp;&nbsp;&nbsp;
  27. 27 <span class="anim"><img src="images/LOGO.png" alt="" width="20px"></span>
  28. 28 <a href="javrscript:void();">展览部</a>
  29. 29 </li>
  30. 30 <li>&nbsp;&nbsp;&nbsp;
  31. 31 <span class="anim"><img src="images/LOGO.png" alt="" width="20px"></span>
  32. 32 <a href="javrscript:void();">以为会工作部</a>
  33. 33 </li>
  34. 34 <li>&nbsp;&nbsp;&nbsp;
  35. 35 <span class="anim"><img src="images/LOGO.png" alt="" width="20px"></span>
  36. 36 <a href="javrscript:void();">信息资源不</a>
  37. 37 </li>
  38. 38 <li>&nbsp;&nbsp;&nbsp;
  39. 39 <span class="anim"><img src="images/LOGO.png" alt="" width="20px"></span>
  40. 40 <a href="javrscript:void();">刷给你年展</a>
  41. 41 </li>
  42. 42 </ul>
  43. 43 </li>
  44. 44 <li>
  45. 45 <span class="anim"><img src="images/LOGO.png" alt="" width="20px"></span>
  46. 46 <a href="javrscript:void();" class="active">组织机构</a>
  47. 47 <ul class="hide two">
  48. 48 <li>
  49. 49 &nbsp;&nbsp;&nbsp;
  50. 50 <span class="anim"><img src="images/LOGO.png" alt="" width="20px"></span>
  51. 51 <a href="javrscript:void();" class="active">没写机关</a>
  52. 52 <ul class="hide three">
  53. 53 <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="anim">></span><a href="###">十分感果</a></li>
  54. 54 <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="anim">></span><a href="###">十分感果</a></li>
  55. 55 <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="anim">></span><a href="###">十分感果</a></li>
  56. 56 </ul>
  57. 57 </li>
  58. 58 <li>
  59. 59 &nbsp;&nbsp;&nbsp;
  60. 60 <span class="anim"><img src="images/LOGO.png" alt="" width="20px"></span>
  61. 61 <a href="javrscript:void();" class="active">艺术中心</a>
  62. 62 <ul class="hide three">
  63. 63 <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="anim">></span><a href="###">如俄额</a></li>
  64. 64 <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="anim">></span><a href="###">如俄额</a></li>
  65. 65 </ul>
  66. 66 </li>
  67. 67 <li>
  68. 68 &nbsp;&nbsp;&nbsp;
  69. 69 <span class="anim"><img src="images/LOGO.png" alt="" width="20px"></span>
  70. 70 <a href="javrscript:void();" class="active">杂志社</a>
  71. 71 <ul class="hide three">
  72. 72 <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="anim">></span><a href="###">再度</a></li>
  73. 73 <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="anim">></span><a href="###">再度</a></li>
  74. 74 <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="anim">></span><a href="###">再度</a></li>
  75. 75 <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="anim">></span><a href="###">再度</a></li>
  76. 76 </ul>
  77. 77 </li>
  78. 78 </ul>
  79. 79 </li>
  80. 80 <li>
  81. 81 <a href="###" class="active">哈哈哈巴啦啦</a>
  82. 82 <ul class="hide">
  83. 83 <li><a href="###">巴啦啦小魔仙</a></li>
  84. 84 <li><a href="###">巴啦啦小魔仙</a></li>
  85. 85 <li><a href="###">巴啦啦小魔仙</a></li>
  86. 86 <li><a href="###">巴啦啦小魔仙</a></li>
  87. 87 <li><a href="###">巴啦啦小魔仙</a></li>
  88. 88 <li><a href="###">巴啦啦小魔仙</a></li>
  89. 89 <li><a href="###">巴啦啦小魔仙</a></li>
  90. 90 </ul>
  91. 91 </li> -->
  92. 92 </ul>
  93. 93 </div>
  94. 94
  95. 95
  96. 96 <script>
  97. 97 // 当文档被加载时触发函数
  98. 98 $(function(){
  99. 99 // 先让第一个一级菜单有背景颜色
  100. 100 $('div.list>ul>li').eq(0).addClass('color');
  101. 101 $('ul.one').on('click','a.active',function(){//不能直接用$获取到动态添加的元素
  102. 102 // console.log("====================");
  103. 103 // console.log($(this));
  104. 104 // 判断ul是否隐藏,如果是隐藏的就让它显示
  105. 105 if($(this).siblings("ul").css("display")=="none"){
  106. 106 $(this).siblings("ul").slideDown(100);
  107. 107 $(this).parent('li').addClass('color');
  108. 108 $(this).parent('li').siblings().removeClass('color');
  109. 109 $(this).siblings('.anim').addClass('rota');
  110. 110 }
  111. 111 // 如果不是隐藏的,就让它隐藏
  112. 112 else{
  113. 113 $(this).siblings("ul").slideUp(100);
  114. 114 $(this).siblings('.anim').removeClass('rota');
  115. 115 }
  116. 116 });
  117. 117 })
  118. 118 </script>
  119. 119
  120. 120 <!-- 处理后台传递过来的数据,动态创建左侧导航 -->
  121. 121 <script>
  122. 122 // var xmlhttp = new XMLHttpRequest();
  123. 123 // xmlhttp.onreadystatechange = function() {
  124. 124 // if(this.readyState==4 && this.status==200) {
  125. 125 // // 将后台返回的字符串数据转js对象
  126. 126 // myobj=JSON.parse(this.responseText);
  127. 127 // // 对数据进行处理
  128. 128 // $(document).ready(function() {
  129. 129 // $.ajax({
  130. 130 // url: '',
  131. 131 // async: 'yes',
  132. 132 // type: 'Post',
  133. 133 // dataType: 'json',
  134. 134 // success: function(data) {
  135. 135 // creatmenu(data);
  136. 136 // },error:function(data) {
  137. 137 // alert("error:"+JSON.stringify(data));
  138. 138 // }
  139. 139 // })
  140. 140 // });
  141. 141 // }
  142. 142 // }
  143. 143
           //模拟后台传递过来的数据
  144. 144 var data=[
  145. 145 { "id": "1", iconCls: "fa fa-send-o", text: "敏捷开发", children: [
  146. 146 { "id": "1_1", iconCls: "fa fa-desktop", text: "代码生成器", url: "../pages/index.jsp" },
  147. 147 { "id": "1_2", iconCls: "fa fa-search", text: "单页管理", url: "pages/1.html"},
  148. 148 { "id": "1_3", iconCls: "fa fa-send-o", text: "插件演示", url: "pages/1.html" },
  149. 149 { "id": "1_4", iconCls: "fa fa-window-restore", text: "开发示例", children: [
  150. 150 { "id": "1_4_1", iconCls: "fa fa-assistive-listening-systems", text: "商机管理" , url: "pages/1.html"},
  151. 151 { "id": "khgl", iconCls: "fa fa-vcard", text: "客户管理", url: "pages/1.html" },
  152. 152 { "id": "kpxx", iconCls: "fa fa-file-excel-o", text: "开票信息" , url: "pages/1.html"},
  153. 153 { "id": "khdd", iconCls: "fa fa-modx", text: "客户订单" , url: "pages/1.html"}
  154. 154 ]
  155. 155 }
  156. 156 ]
  157. 157 },
  158. 158 { "id": "xtgl", iconCls: "fa fa-desktop", text: "系统管理", children: [
  159. 159 { "id": "xzgl", iconCls: "fa fa-leaf", text: "行政管理", url: "pages/1.html" },
  160. 160 { "id": "sjzd", iconCls: "fa fa-book", text: "数据字典", url: "pages/1.html" },
  161. 161 { "id": "djbm", iconCls: "fa fa-barcode", text: "单据编码", url: "pages/1.html" },
  162. 162 { "id": "xtgn", iconCls: "fa fa-navicon", text: "系统功能", url: "pages/1.html" },
  163. 163 { "id": "excel", iconCls: "fa fa-file-excel-o", text: "Excel配置", children: [
  164. 164 { "id": "drpz", iconCls: "fa fa-sign-out", text: "导入配置", url: "pages/1.html" },
  165. 165 { "id": "dcpz", iconCls: "fa fa-sign-out", text: "导出配置", url: "pages/1.html" }
  166. 166 ]
  167. 167 },
  168. 168 { "id": "sjgl", iconCls: "fa fa-database", text: "数据管理", children: [
  169. 169 { "id": "sjklj", iconCls: "fa fa-plug", text: "数据库连接", url: "pages/1.html" },
  170. 170 { "id": "sjbgl", iconCls: "fa fa-table", text: "数据表管理", url: "pages/1.html" },
  171. 171 { "id": "sjygl", iconCls: "fa fa-bullseye", text: "数据源管理", url: "pages/1.html" }
  172. 172 ]
  173. 173 }
  174. 174 ]},
  175. 175 { "id": "sjgl", iconCls: "fa fa-database", text: "数据管理", children: [
  176. 176 { "id": "sjklj", iconCls: "fa fa-plug", text: "数据库连接", url: "pages/1.html" },
  177. 177 { "id": "sjbgl", iconCls: "fa fa-table", text: "数据表管理", url: "pages/1.html" },
  178. 178 { "id": "sjygl", iconCls: "fa fa-bullseye", text: "数据源管理", url: "pages/1.html" }
  179. 179 ]
  180. 180 }
  181. 181 ];
  182. 182
  183. 183 // console.log("ddddd");
  184. 184 creatmenu(data);//调用方法
  185. 185
  186. 186 // 定义一个创建菜单的方法
  187. 187 function creatmenu(data) {
  188. 188 // console.log(data);
  189. 189 $.each(data,function(i,item) {//遍历整体数据,一支一支的遍历,不是一层一层去遍历
  190. 190 console.log(item);
  191. 191 // console.log(item.children);
  192. 192 // console.log(item.children.length);
  193. 193 console.log(item.text);
  194. 194 if(item.children) {//如果1级菜单有子菜单,就添加一级菜单数据并包含2级ul
  195. 195 // 添加一级菜单
  196. 196 $('ul.one').append("<li><span class='anim'><img src='images/jian.png' alt='' width='15px' height='15px'></span><a href='javrscript:void();' class='active'>"+item.text+"</a><ul class='hide two two"+i+" '></ul></li>");
  197. 197
  198. 198 // var ul2 = $("<li></li>");
  199. 199 // console.log(i);
  200. 200 // console.log($(this).index());//为什么全都是-1??????????
  201. 201 $.each(item.children,function(j,val) {//循环1级菜单的2级菜单
  202. 202 // console.log(i);
  203. 203 // console.log($('ul.one').eq(i));
  204. 204 // $('ul.one').eq(i).children('ul.two').prepend("<li>&nbsp;&nbsp;&nbsp;<span class='anim'><img src='images/LOGO.png' alt='' width='20px'></span><a href='javrscript:void();' class='active'>"+val.text+"</a><ul class='hide three'></ul></li>");
  205. 205 // $('ul.two').prepend("<li>&nbsp;&nbsp;&nbsp;<span class='anim'><img src='images/LOGO.png' alt='' width='20px'></span><a href='javrscript:void();' class='active'>"+val.text+"</a><ul class='hide three'></ul></li>");
  206. 206 // $('ul.one').eq(i).children('li').children('ul.two').prepend("<li>&nbsp;&nbsp;&nbsp;<span class='anim'><img src='images/LOGO.png' alt='' width='20px'></span><a href='javrscript:void();' class='active'>"+val.text+"</a><ul class='hide three'></ul></li>");
  207. 207 // $(ul2).append("<ul class='hide two'></ul>").appendTo(parent);
  208. 208 // $(ul.one).eq(i).children(ul2).children('ul.two').prepend("<li>&nbsp;&nbsp;&nbsp;<span class='anim'><img src='images/LOGO.png' alt='' width='20px'></span><a href='javrscript:void();' class='active'>"+val.text+"</a></li>");
  209. 209 // $('ul.one').eq(i).children('li').children('ul.two').prepend("<li>&nbsp;&nbsp;&nbsp;<span class='anim'><img src='images/LOGO.png' alt='' width='20px'></span><a href='javrscript:void();' class='active'>"+val.text+"</a><ul class='hide three'></ul></li>");
  210. 210 // console.log(val);
  211. 211 // console.log(val.text);
  212. 212 // console.log(val.children);
  213. 213 if(val.children) {//如果二级菜单存在子菜单,就添加三级菜单
  214. 214 $("ul."+"two"+i).append("<li>&nbsp;&nbsp;&nbsp;<span class='anim'><img src='images/jian.png' alt='' width='20px'></span><a href='javrscript:void();' class='active'>"+val.text+"</a><ul class='hide three three"+j+"'></ul></li>");
  215. 215
  216. 216 // var ul3 = $("<ul class='hide three'></ul>");
  217. 217 $.each(val.children,function(q,meta) {// 遍历3级菜单
  218. 218 $("ul."+"three"+j).append("<li>&nbsp;&nbsp;&nbsp;<span class='anim'><img src='images/jian.png' alt='' width='20px'></span><a href='javrscript:void();' class='active'>"+meta.text+"</a></li>");
  219. 219 // $('ul.two').eq(j).children('ul.three').prepend("<li>&nbsp;&nbsp;&nbsp;<span class='anim'><img src='images/LOGO.png' alt='' width='20px'></span><a href='javrscript:void();' class='active'>"+meta.text+"</a></li>");
  220. 220 // $('ul.one').eq(i).children('li').children('ul.two').eq(j).children('ul.three').prepend("<li>&nbsp;&nbsp;&nbsp;<span class='anim'><img src='images/LOGO.png' alt='' width='20px'></span><a href='javrscript:void();' class='active'>"+meta.text+"</a></li>");
  221. 221 })
  222. 222 }
  223. 223 else{//如果二级菜单没有子菜单,就只添加二级菜单
  224. 224 $("ul."+"two"+i).append("<li>&nbsp;&nbsp;&nbsp;<span class='anim'><img src='images/jian.png' alt='' width='20px'></span><a href='javrscript:void();' class='active'>"+val.text+"</a></li>");
  225. 225 return;
  226. 226 }
  227. 227
  228. 228 })
  229. 229 }
  230. 230 else{//如果一级菜单没有子菜单就只渲染一级菜单数据
  231. 231
  232. 232 $('ul.one').append("<li><span class='anim'><img src='images/jian.png' alt='' width='20px'></span><a href='javrscript:void();' class='active'>"+item.text+"</a></li>");
  233. 233 return;
  234. 234 }
  235. 235 });
  236. 236 }
  237. 237 </script>
  238. 238 </body>
  239. 239 </html>
  1.  

 

  1.  

原文链接:http://www.cnblogs.com/677a/p/11727501.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号