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 相关文章推荐
Extjs4 GridPanel的主要配置参数详细介绍
Apr 18 Javascript
struts2+jquery+json实现异步加载数据(自写)
Jun 24 Javascript
Js获取数组最大和最小值示例代码
Oct 29 Javascript
10分钟学会写Jquery插件实例教程
Sep 06 Javascript
使用jQuery仿苹果官网焦点图特效
Dec 23 Javascript
dedecms页面如何获取会员状态的实例代码
Mar 15 Javascript
AngularJS中transclude用法详解
Nov 03 Javascript
jquery处理checkbox(复选框)是否被选中实例代码
Jun 12 jQuery
js中如何完美的解析数据
Mar 18 Javascript
微信小程序 腾讯地图SDK 获取当前地址实现解析
Aug 12 Javascript
深入解读VUE中的异步渲染的实现
Jun 19 Javascript
vue实现井字棋游戏
Sep 29 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代码运行时间查看类代码分享
2011/08/06 PHP
php根据isbn书号查询amazon网站上的图书信息的示例
2014/02/13 PHP
递归删除一个节点以及该节点下的所有节点示例
2014/03/19 PHP
浅谈本地WAMP环境的搭建
2015/05/13 PHP
PHP解决中文乱码
2017/04/28 PHP
深入理解JavaScript系列(12) 变量对象(Variable Object)
2012/01/16 Javascript
javascript游戏开发之《三国志曹操传》零部件开发(五)可移动地图的实现
2013/01/23 Javascript
浅谈jquery回调函数callback的使用
2015/01/30 Javascript
js实现登陆遮罩效果的方法
2015/07/28 Javascript
分享JavaScript与Java中MD5使用两个例子
2015/12/23 Javascript
prototype框架中美元符号$用法分析
2016/01/22 Javascript
深入探究JavaScript中for循环的效率问题及相关优化
2016/03/13 Javascript
jquery输入数字随机抽奖特效的简单实现代码
2016/06/10 Javascript
Node.js的环境安装配置(使用nvm方式)
2016/10/11 Javascript
详解Vue.js组件可复用性的混合(mixin)方式和自定义指令
2017/09/06 Javascript
vue实现登录后页面跳转到之前页面
2018/01/07 Javascript
学习JS中的DOM节点以及操作
2018/04/30 Javascript
vue elementui form表单验证的实现
2018/11/11 Javascript
websocket4.0+typescript 实现热更新的方法
2019/08/14 Javascript
[00:37]2016完美“圣”典风云人物:rOtk宣传片
2016/12/09 DOTA
[09:34]2018DOTA2国际邀请赛寻真——永不放弃的iG
2018/08/14 DOTA
Python中的装饰器用法详解
2015/01/14 Python
Python编码爬坑指南(必看)
2016/06/10 Python
python excel使用xlutils类库实现追加写功能的方法
2018/05/02 Python
Python实现拷贝/删除文件夹的方法详解
2018/08/29 Python
解决Python pandas plot输出图形中显示中文乱码问题
2018/12/12 Python
实例讲解Python 迭代器与生成器
2020/07/08 Python
django rest framework 自定义返回方式
2020/07/12 Python
了解AppleTalk协议吗
2014/04/01 面试题
自我鉴定200字
2013/10/28 职场文书
艺术设计专业个人求职信
2014/04/10 职场文书
会计求职信范文
2014/05/24 职场文书
个人借条范本
2015/05/25 职场文书
用javascript制作qq注册动态页面
2021/04/14 Javascript
Java tomcat手动配置servlet详解
2021/11/27 Java/Android
关于使用Redisson订阅数问题
2022/01/18 Redis