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 相关文章推荐
javascript 通用loading动画效果实例代码
Jan 14 Javascript
jQuery中:contains选择器用法实例
Dec 30 Javascript
JS实现控制表格内指定单元格内容对齐的方法
Mar 30 Javascript
浅析JavaScript 箭头函数 generator Date JSON
May 23 Javascript
Bootstrap组件系列之福利篇几款好用的组件(推荐)
Jun 23 Javascript
jQuery插件HighCharts绘制的2D堆柱状图效果示例【附demo源码下载】
Mar 14 Javascript
vue.js中v-on:textInput无法执行事件问题的解决过程
Jul 12 Javascript
webstorm中配置Eslint的两种方式及差异比较详解
Oct 19 Javascript
vue+render+jsx实现可编辑动态多级表头table的实例代码
Apr 01 Javascript
easyUI 实现的后台分页与前台显示功能示例
Jun 01 Javascript
jQuery实现雪花飘落效果
Aug 02 jQuery
jquery实现广告上下滚动效果
Mar 04 jQuery
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
2020最新CPU的性能排名
2020/04/02 数码科技
php静态文件返回304技巧分享
2015/01/06 PHP
php实现parent调用父类的构造方法与被覆写的方法
2015/02/11 PHP
PHP连接MSSQL方法汇总
2016/02/05 PHP
php自定义中文字符串截取函数substr_for_gb2312及substr_for_utf8示例
2016/05/28 PHP
PHP编程实现微信企业向用户付款的方法示例
2017/07/26 PHP
js中的escape及unescape函数的php实现代码
2007/09/04 Javascript
JAVASCRIPT下判断IE与FF的比较简单的方式
2008/10/17 Javascript
js中widow.open()方法使用详解
2013/07/30 Javascript
js限制文本框只能输入中文的方法
2015/08/11 Javascript
轻松掌握jQuery中wrap()与unwrap()函数的用法
2016/05/24 Javascript
jQuery each函数源码分析
2016/05/25 Javascript
jQuery实现联动下拉列表查询框
2017/01/04 Javascript
Node.js获取前端ajax提交的request信息
2017/02/20 Javascript
jQuery实现ajax回调函数带入参数的方法示例
2018/06/26 jQuery
微信小程序实现分享到朋友圈功能
2018/07/19 Javascript
详解swiper在vue中的应用(以3.0为例)
2018/09/20 Javascript
vue 验证码界面实现点击后标灰并设置div按钮不可点击状态
2019/10/28 Javascript
解决Vue 移动端点击出现300毫秒延迟的问题
2020/07/21 Javascript
[09:40]DAC2018 4.5 SOLO赛 MidOne vs Miracle
2018/04/06 DOTA
玩转python爬虫之URLError异常处理
2016/02/17 Python
python2 与python3的print区别小结
2018/01/16 Python
Python的多维空数组赋值方法
2018/04/13 Python
Python 中判断列表是否为空的方法
2019/11/24 Python
python实现异常信息堆栈输出到日志文件
2019/12/26 Python
Python下利用BeautifulSoup解析HTML的实现
2020/01/17 Python
使用html5 canvas 画时钟代码实例分享
2015/11/11 HTML / CSS
MVC的各个部分都有那些技术来实现?如何实现?
2016/04/21 面试题
Java语言程序设计测试题改错题部分
2014/07/22 面试题
餐饮采购员岗位职责
2014/03/15 职场文书
土木工程求职信
2014/05/29 职场文书
党的群众路线教育实践活动批评与自我批评范文
2014/10/16 职场文书
欠条格式范本
2015/07/03 职场文书
员工手册董事长致辞
2015/07/29 职场文书
SQLServer中exists和except用法介绍
2021/12/04 SQL Server
Linux系统下MySQL配置主从分离的步骤
2022/03/21 MySQL