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 相关文章推荐
百度Popup.js弹出框进化版 拖拽小框架发布 兼容IE6/7/8,Firefox,Chrome
Apr 13 Javascript
jQuery zclip插件实现跨浏览器复制功能
Nov 02 Javascript
Hammer.js+轮播原理实现简洁的滑屏功能
Feb 02 Javascript
jQuery基于函数重载实现自定义Alert函数样式的方法
Jul 27 Javascript
Jquery组件easyUi实现表单验证示例
Aug 23 Javascript
vue.js从安装到搭建过程详解
Mar 17 Javascript
Angular中支持SCSS的方法
Nov 18 Javascript
Vue.js实现分页查询功能
Nov 15 Javascript
vue2.0页面前进刷新回退不刷新的实现方法
Jul 31 Javascript
JavaScript如何把两个数组对象合并过程解析
Oct 10 Javascript
使用JS监听键盘按下事件(keydown event)
Nov 07 Javascript
js代码编写无缝轮播图
Sep 13 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实现变色验证码实例
2014/01/06 PHP
PHP中文编码小技巧
2014/12/25 PHP
thinkPHP中钩子的使用方法实例分析
2017/11/16 PHP
laravel5.6框架操作数据curd写法(查询构建器)实例分析
2020/01/26 PHP
yii2.0框架实现上传excel文件后导入到数据库的方法示例
2020/04/13 PHP
Dom操作之兼容技巧分享
2011/09/20 Javascript
解析js原生方法创建表格效率测试
2013/07/08 Javascript
使用console进行性能测试
2015/04/27 Javascript
javascript中传统事件与现代事件
2015/06/23 Javascript
微信小程序 navigation API实例详解
2016/10/02 Javascript
基于Bootstrap仿淘宝分页控件实现代码
2016/11/07 Javascript
jQuery实现导航栏头部菜单项点击后变换颜色的方法
2017/07/19 jQuery
Bootstrap 模态框多次显示后台提交多次BUG的解决方法
2017/12/26 Javascript
详解Vue3 Composition API中的提取和重用逻辑
2020/04/29 Javascript
谈一谈vue请求数据放在created好还是mounted里好
2020/07/27 Javascript
Python 时间处理datetime实例
2008/09/06 Python
Python 创建子进程模块subprocess详解
2015/04/08 Python
快速排序的四种python实现(推荐)
2019/04/03 Python
Django之无名分组和有名分组的实现
2019/04/16 Python
python 实现识别图片上的数字
2019/07/30 Python
解决Python中回文数和质数的问题
2019/11/24 Python
详解如何在css3打包后自动追加前缀插件:autoprefixer
2018/12/18 HTML / CSS
阿迪达斯西班牙官方网站:adidas西班牙
2016/07/21 全球购物
汇集了世界上最好的天然和有机美容产品:LoveLula
2018/02/05 全球购物
加州风格的游泳和沙滩装品牌:Cupshe
2019/06/10 全球购物
文件中有一组整数,要求排序后输出到另一个文件中
2012/01/04 面试题
安全承诺书范文
2014/03/26 职场文书
关于随地扔垃圾的检讨书
2014/09/30 职场文书
2015年村党支部工作总结
2015/04/30 职场文书
单位同意报考证明
2015/06/17 职场文书
百年校庆感言
2015/08/01 职场文书
军事理论课感想
2015/08/11 职场文书
小学班主任培训心得体会
2016/01/07 职场文书
如何把新闻人物写得立体、鲜活?
2019/08/14 职场文书
共青团优秀团员申请书(范文)
2019/08/15 职场文书
MySQL8.0的WITH查询详情
2021/08/30 MySQL