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 相关文章推荐
jquery attr 设定src中含有&amp;(宏)符号问题的解决方法
Jul 26 Javascript
jQuery设置与获取HTML,文本和值的简单实例
Feb 26 Javascript
对new functionName()定义一个函数的理解
May 22 Javascript
javascript计时器详解
Feb 28 Javascript
jquery实现简单文字提示效果
Dec 02 Javascript
js console.log打印对像与数组用法详解
Jan 21 Javascript
JS实现获取当前URL和来源URL的方法
Aug 24 Javascript
利用Bootstrap实现表格复选框checkbox全选
Dec 21 Javascript
mpvue微信小程序多列选择器用法之省份城市选择的实现
Mar 07 Javascript
JavaScript高阶教程之“==”隐藏下的类型转换
Apr 11 Javascript
微信小程序实现搜索功能
Mar 10 Javascript
vue设置全局访问接口API地址操作
Aug 14 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
香妃
2021/03/03 冲泡冲煮
nginx+php-fpm配置文件的组织结构介绍
2012/11/07 PHP
php实现PDO中捕获SQL语句错误的方法
2017/02/16 PHP
IE iframe的onload方法分析小结
2010/01/07 Javascript
iframe调用父页面函数示例详解
2014/07/17 Javascript
基于jquery步骤进度条源码分享
2015/11/12 Javascript
jQuery实现立体式数字动态增加(animate方法)
2016/12/21 Javascript
JS中绑定事件顺序(事件冒泡与事件捕获区别)
2017/01/24 Javascript
基于Vue.js实现tab滑块效果
2017/07/23 Javascript
Vue.js如何实现路由懒加载浅析
2017/08/14 Javascript
引入JavaScript时alert弹出框显示中文乱码问题
2017/09/16 Javascript
vue-router实现tab标签页(单页面)详解
2017/10/17 Javascript
React路由管理之React Router总结
2018/05/10 Javascript
js 实现在2d平面上画8的方法
2018/10/10 Javascript
layui监听下拉选框选中值变化的方法(包含监听普通下拉选框)
2019/09/24 Javascript
在vue中使用jsx语法的使用方法
2019/09/30 Javascript
[03:18]DOTA2亚洲邀请赛小组赛第一日 RECAP赛事回顾
2015/01/30 DOTA
浅谈python新手中常见的疑惑及解答
2016/06/14 Python
python日志记录模块实例及改进
2017/02/12 Python
Python socket套接字实现C/S模式远程命令执行功能案例
2018/07/06 Python
python super函数使用方法详解
2020/02/14 Python
python3连接MySQL8.0的两种方式
2020/02/17 Python
使用Nibabel库对nii格式图像的读写操作
2020/07/01 Python
使用Python爬虫爬取小红书完完整整的全过程
2021/01/19 Python
Hunkemöller瑞士网上商店:欧洲最大的内衣品牌之一
2018/12/03 全球购物
JAKO-O德国野酷台湾站:德国首屈一指的婴幼童用品品牌
2019/01/14 全球购物
定义一结构体变量,用其表示点坐标,并输入两点坐标,求两点之间的距离
2015/08/17 面试题
思想品德自我评价
2014/02/04 职场文书
庆元旦迎新年广播稿
2014/02/18 职场文书
自荐信如何制作?
2014/02/21 职场文书
客户接待方案
2014/02/26 职场文书
三八妇女节活动总结
2014/05/04 职场文书
年度安全生产目标责任书
2014/07/23 职场文书
2014年技术工作总结范文
2014/11/20 职场文书
最美劳动诗,致敬所有的劳动者!
2019/07/12 职场文书
JavaScript函数柯里化
2021/11/07 Javascript