JS无限级导航菜单实现方法


Posted in Javascript onJanuary 05, 2019

这里使用layui渲染的导航

实体类

dept.java

private int id; //id
  private String dept_name;  //部门名称
  private int pid;  //上级部门id
  private int sort_num;  //排序值
  private int create_id; //创建人
  private String create_time; //创建时间
  private int modify_id; //修改人
  private String modify_time; //最后修改时间
  private int is_del; // 是否删除 0 未删除 1 已删除
  private int status; //status
  private String remark; //remark
  private List<Dept> deptChild = new ArrayList<>(); //部门迭代

DeptMapper.java

List<Dept> selectDeptForJsonMenu();

DeptMapper.xml

<resultMap type="com.ys.entity.Dept" id="deptFirst">
    <result column="id" property="id" javaType="java.lang.Integer" />
    <result column="dept_name" property="dept_name" javaType="java.lang.String" />
    <result column="sort_num" property="sort_num" javaType="java.lang.Integer" />
    <result column="create_time" property="create_time" javaType="java.lang.String" />
    <result column="modify_id" property="modify_id" javaType="java.lang.Integer" />
    <result column="modify_time" property="modify_time" javaType="java.lang.String" />
    <result column="is_del" property="is_del" javaType="java.lang.Integer" />
    <result column="status" property="status" javaType="java.lang.Integer" />
    <result column="remark" property="remark" javaType="java.lang.String" />
    <collection column="id" property="deptChild" javaType="java.util.ArrayList" select="selectDeptForJsonMenuChild"/>
  </resultMap>
  <!-- 查询部门菜单树 -->
  <select id="selectDeptForJsonMenu" resultMap="deptFirst">
    SELECT * FROM sys_dept WHERE pid = 0 AND is_del = 0 ORDER BY sort_num
  </select>
  <select id="selectDeptForJsonMenuChild" resultMap="deptFirst" parameterType="java.lang.Integer">
    select * FROM sys_dept where pid = #{id} AND is_del = 0 ORDER BY sort_num
  </select>

DeptService.java

public List<Dept> selectDeptForJsonMenu(){
    return mapper.selectDeptForJsonMenu();
  }

DeptController.java

@RequestMapping(value = "selectDeptForJsonMenu",method={RequestMethod.GET,RequestMethod.POST})
  @ResponseBody
  public List<Dept> selectDeptForJsonMenu(){
    return service.selectDeptForJsonMenu();
  }

html 引入layui.js,layui.css 并加载element模块.

<div id="leftMenu">
</div>
$(function(){
  $.ajax({
    method:'post',
    url:getPath+"dept/selectDeptForJsonMenu",
    dataType:'json',
    success:function(data){
      if(data.length > 0){
        var showlist = $('<ul class="layui-nav layui-nav-tree"></ul>');
        showall(data, showlist);
        $("#leftMenu").html(showlist);
      }else{ 
        $('#leftMenu').html('<span class="layui-btn layui-btn-primary" id="add">添加</span>') ; 
      }
    }
  });
  //json为json数据
  //parent为最终html拼接内容
  function showall(json, parent) {
    for (var i in json) {
      //有子节点 遍历
      if (json[i].deptChild.length > 0) {
        //创建li
        var li = $('<li class="layui-nav-item layui-nav-itemed"></li>');
        $(li).append('<a href="javascript:;" rel="external nofollow" rel="external nofollow" >'+json[i].dept_name+'</a>');
        $(li).append('<ul class="layui-nav-child"></ul>').appendTo(parent);
        //将UL选中 回调
        showall(json[i].deptChild, $(li).children().eq(1));
      }
      //无子级
      else {
        $('<li></li>').append('<a href="javascript:;" rel="external nofollow" rel="external nofollow" >'+json[i].dept_name+'</a>').appendTo(parent);
      }
    }
  }
});

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。如果你想了解更多相关内容请查看下面相关链接

Javascript 相关文章推荐
js 上传文件预览的简单实例
Aug 16 Javascript
javascript中活灵活现的Array对象详解
Nov 30 Javascript
Vue2.0实现1.0的搜索过滤器功能实例代码
Mar 20 Javascript
js 去掉字符串前后空格实现代码集合
Mar 25 Javascript
angularjs下拉框空白的解决办法
Jun 20 Javascript
vue.js源代码core scedule.js学习笔记
Jul 03 Javascript
原生JavaScript来实现对dom元素class的操作方法(推荐)
Aug 16 Javascript
JS数组交集、并集、差集的示例代码
Aug 23 Javascript
react+redux仿微信聊天界面
Jun 21 Javascript
Node.js实现简单的爬取的示例代码
Jun 25 Javascript
vue实现公告栏文字上下滚动效果的示例代码
Jun 16 Javascript
js实现删除json中指定的元素
Sep 22 Javascript
JSON字符串操作移除空串更改key/value的介绍
Jan 05 #Javascript
JavaScript常见事件对象与操作实例总结
Jan 05 #Javascript
JavaScript常见事件处理程序实例总结
Jan 05 #Javascript
JavaScript代码调试方法实例小结
Jan 05 #Javascript
JavaScript实现连连看连线算法
Jan 05 #Javascript
JavaScript错误处理操作实例详解
Jan 04 #Javascript
JSON基本语法及与JavaScript的异同实例分析
Jan 04 #Javascript
You might like
php程序效率优化的一些策略小结
2010/07/17 PHP
php短域名转换为实际域名函数
2011/01/17 PHP
Windows下利用Gvim写PHP产生中文乱码问题解决方法
2011/04/20 PHP
PHP验证码函数代码(简单实用)
2013/09/29 PHP
PHP自动载入类文件函数__autoload的使用方法
2019/03/25 PHP
javascript 触发HTML元素绑定的函数
2010/09/11 Javascript
JS获取浏览器版本及名称实现函数
2013/04/02 Javascript
javascript判断两个IP地址是否在同一个网段的实现思路
2013/12/13 Javascript
原生js实现弹出层登录拖拽功能
2016/12/05 Javascript
jQuery表单设置值的方法
2017/06/30 jQuery
Vue cli+mui 区域滚动的实例代码
2018/01/25 Javascript
jquery轻量级数字动画插件countUp.js使用详解
2019/10/17 jQuery
JavaScript命令模式原理与用法实例详解
2020/03/10 Javascript
vue.js 输入框输入值自动过滤特殊字符替换中问标点操作
2020/08/31 Javascript
JavaScript 常见的继承方式汇总
2020/09/17 Javascript
解析Python中的异常处理
2015/04/28 Python
Python编程中运用闭包时所需要注意的一些地方
2015/05/02 Python
Python使用修饰器执行函数的参数检查功能示例
2017/09/26 Python
人脸识别经典算法一 特征脸方法(Eigenface)
2018/03/13 Python
python判断字符串或者集合是否为空的实例
2019/01/23 Python
python找出一个列表中相同元素的多个索引实例
2019/06/11 Python
python 读写excel文件操作示例【附源码下载】
2019/06/19 Python
零基础学Python之前需要学c语言吗
2020/07/21 Python
Python读写压缩文件的方法
2020/07/30 Python
python实现图片转换成素描和漫画格式
2020/08/19 Python
超30万乐谱下载:Musicnotes.com
2016/09/24 全球购物
SteelSeries赛睿官网:游戏外设和配件的领先制造商(耳机、键盘、鼠标和鼠标垫)
2018/06/17 全球购物
请写一个C函数,若处理器是Big_endian的,则返回0;若是Little_endian的,则返回1
2015/07/16 面试题
小学生自我评价范文
2014/01/25 职场文书
班组安全员工作职责
2014/02/01 职场文书
优秀德育工作者事迹材料
2014/05/07 职场文书
检讨书1000字
2014/10/11 职场文书
2014年后勤管理工作总结
2014/12/01 职场文书
一年级语文教学随笔
2015/08/14 职场文书
2016年万圣节家长开放日活动总结
2016/04/05 职场文书
python实现层次聚类的方法
2021/11/01 Python