中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

layui遞歸實現動態左側菜單

發布時間:2021-06-01 18:33:02 來源:億速云 閱讀:215 作者:Leah 欄目:web開發

這篇文章給大家介紹layui遞歸實現動態左側菜單,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

一、先加載所有的主菜單,之后通過點擊主菜單在加載該菜單的子菜單(缺點,如果判斷是否已經加載過,那么動態添加了菜單,這里顯示不出來,不判斷的話,每次點擊都會請求一次,這樣請求的次數就太多了,服務器不太好的話可能會成為高并發的一個原因)

二、就是以下的了,使用遞歸一次性全部加載出來(缺點,耗費服務器內存)

如果動態添加一個菜單,你當前頁面不手動刷新菜單不會顯示,這個問題可以考慮用websocket實現

首先是service層如何獲取所有的菜單(主菜單和所有的子菜單)

 /**
 *獲取所有菜單
 **/
 @Override
 public List<MeunInfo> getParentMeun() {
 //獲取所有的菜單(包括子菜單和父級菜單)
 List<MeunInfo> list = meunDao.getParentMeun();
 //創建一個集合用于保存所有的主菜單
 List<MeunInfo> rootMeun=new ArrayList<>();
 //遍歷所有菜單集合,如果是主菜單的話直接放入rootMeun集合
 for (MeunInfo info:list){
 //判斷為0是因為我的主菜單標識是0
 if (info.getMeunParent()==0){
 rootMeun.add(info);
 }
 }
 
 
 //這個是遍歷所有主菜單,分別獲取所有主菜單的所有子菜單
 for (MeunInfo info:rootMeun){
 //獲取所有子菜單 遞歸
 List<MeunInfo> childrenList=getchildrenMeun(info.getId(),list);
 //這個是實體類中的子菜單集合
 info.setChildrenList(childrenList);
 }
 return rootMeun;
 }
 
/**
* 遞歸獲取子菜單(這個我也不太理解,copy過去就行)
**/
public List<MeunInfo> getchildrenMeun(int id,List<MeunInfo> allMeun){
 //用于保存子菜單
 List<MeunInfo> childrenList=new ArrayList<>();
 for (MeunInfo info: allMeun){
 //判斷當前的菜單標識是否等于主菜單的id
 if(info.getMeunParent()==id){
 //如果是的話 就放入主菜單對象的子菜單集合
 childrenList.add(info);
 }
 }
 
 //這里就是遞歸了,遍歷所有的子菜單
 for (MeunInfo info:childrenList){
 info.setChildrenList(getchildrenMeun(info.getId(),allMeun));
 }
 
 //如果子菜單為空的話,那就說明某菜單下沒有子菜單了,直接返回空,子菜單為空的話就不會繼續 
 //迭代了
 if(childrenList!=null && childrenList.size()==0){
 return null;
 }
 return childrenList;
 }

接下來是實體類

 //菜單id
 private int id;
 //菜單標題
 private String meunTitle;
 //菜單地址
 private String meunUrl;
 //菜單狀態
 private int meunStatus;
 //菜單標識
 private int meunParent;
 //菜單排序
 private int meunSort;
 //子菜單集合
 private List<MeunInfo> childrenList;
 
 //get set 省略

之后你可以測試,可以拿到結果,這個自行測試

界面代碼(注意這里我是用的是layui)

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Title</title>
 <link rel="stylesheet" href="css/layui.css" >
 <style type="text/css">
 #index-container,html,body{
 margin:0px;
 padding:0px;
 }
 #index-container{
 width:100%;
 height:auto;
 
 }
 
 #index-navigationbar{
 width:100%;
 height:60px;
 }
 
 #index-navigationbar ul{
 padding-left:77%;
 }
 
 #index-commonmenu{
 width: 15%;
 height:519px;
 float: left;
 }
 #indixe-tab{
 width:84.9%;
 height: 150px;
 float: right;
 }
 </style>
</head>
<body>
 <!--首頁容器-->
 <div id="index-container">
 <!--信息菜單-->
 <div id="index-navigationbar">
 <ul class="layui-nav" >
 <li class="layui-nav-item">
  <a href="">控制臺<span class=" layui-badge">9</span></a>
 </li>
 <li class="layui-nav-item">
  <a href="">個人中心<span class=" layui-badge-dot"></span></a>
 </li>
 <li class="layui-nav-item" lay-unselect="">
  <a href="javascript:;" ><img src="//t.cn/RCzsdCq" class="layui-nav-img">我</a>
  <dl class="layui-nav-child">
  <dd><a href="javascript:;" >修改信息</a></dd>
  <dd><a href="javascript:;" >安全管理</a></dd>
  <dd><a href="javascript:;" >退了</a></dd>
  </dl>
 </li>
 </ul>
 </div>
 
 <!--操作菜單-->
 <div id="index-commonmenu">
 <ul class="layui-nav layui-nav-tree" lay-filter="demo" >
 <!-- <li class="layui-nav-item">
  <a href="javascript:;" >筆記管理</a>
  <dl class="layui-nav-child">
  <dd><a href="javascript:;" meun_id=1>筆記列表</a></dd>
  <dd><a href="javascript:;" >分享列表</a></dd>
  </dl>
 </li>
 <li class="layui-nav-item">
  <a href="javascript:;" >解決方案</a>
  <dl class="layui-nav-child">
  <dd>
  <a href="javascript:;" >其他</a>
  <dl class="layui-nav-child">
  <dd><a href="javascript:;" >三級菜單</a></dd>
  </dl>
  </dd>
  <dd><a href="">后臺模版</a></dd>
  <dd><a href="">電商平臺</a></dd>
  </dl>
 </li>
 <li class="layui-nav-item"><a href="javascript:;" >云市場</a></li>
 <li class="layui-nav-item"><a href="javascript:;" >社區</a></li>-->
 </ul>
 </div>
 
 <!--頁面選項卡-->
 <div id="indixe-tab">
 <div class="layui-tab" lay-allowClose="true" lay-filter="demo1" >
 <ul class="layui-tab-title">
 
 </ul>
 <div class="layui-tab-content" >
 
 </div>
 </div>
 </div>
 
 <div ></div>
 
 </div>
</body>
</html>
<script type="text/javascript" src="/layui.js"></script>
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<script>
 //注意:導航 依賴 element 模塊,否則無法進行功能性操作
 layui.use('element', function(){
 var $ = layui.jquery
 ,element = layui.element;
 
 element.on('nav(demo)', function(elem){
 //console.log(elem.getAttribute("meun_id")); //得到當前點擊的DOM對象
 var id=$(this).attr("meun_id");
 if(typeof(id)!="undefined"){
 console.log('進入方法');
 element.tabAdd('demo1', {
  title: '新選項'+ (Math.random()*1000|0) //用于演示
  ,content: '<iframe src="test.html"  scrolling="auto" frameborder="0"></iframe>'
  ,id: id//實際使用一般是規定好的id,這里以時間戳模擬下z
 })
 element.tabChange('demo1', id);
 }
 });
 //獲取所有的菜單
 $.ajax({
 type:"GET",
 url:"http://localhost:8080/test",
 dataType:"json",
 success:function(data){
 //先添加所有的主材單
 $.each(data,function(i,obj){
  var content='<li class="layui-nav-item">';
  content+='<a href="javascript:;" >'+obj.meunTitle+'</a>';
  //這里是添加所有的子菜單
  content+=loadchild(obj);
  content+='</li>';
  $(".layui-nav-tree").append(content);
 });
 element.init();
 },
 error:function(jqXHR){
 aler("發生錯誤:"+ jqXHR.status);
 }
 });
 
 //組裝子菜單的方法
 function loadchild(obj){
 if(obj==null){
 return;
 }
 
 var content='';
 if(obj.childrenList!=null && obj.childrenList.length>0){
 content+='<dl class="layui-nav-child">';
 }else{
 content+='<dl>';
 }
 
 if(obj.childrenList!=null && obj.childrenList.length>0){
 $.each(obj.childrenList,function(i,note){
  content+='<dd>';
  content+='<a href="javascript:;" >'+note.meunTitle+'</a>';
  if(note.childrenList==null){
  return;
  }
  content+=loadchild(note);
  content+='</dd>';
 });
 
 content+='</dl>';
 }
 console.log(content);
 return content;
 }
 });
</script>

關于layui遞歸實現動態左側菜單就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

革吉县| 洛南县| 阜宁县| 贵定县| 永吉县| 舒兰市| 永宁县| 广汉市| 呼伦贝尔市| 泸定县| 卓资县| 遂溪县| 阿城市| 台江县| 介休市| 临桂县| 城固县| 辽宁省| 宁都县| 子洲县| 商南县| 普定县| 绥江县| 灵山县| 自治县| 东乌| 延庆县| 洪洞县| 溧水县| 大石桥市| 尤溪县| 兴国县| 教育| 商南县| 贵溪市| 嫩江县| 星座| 乐至县| 宝山区| 台北市| 台山市|