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模仿msgbox提示效果代码
Jun 10 Javascript
让IE6支持min-width和max-width的方法
Jun 25 Javascript
JQuery动画和停止动画实例代码
Mar 01 Javascript
jquery实现微博文字输入框 输入时显示输入字数 效果实现
Jul 12 Javascript
js动态创建上传表单通过iframe模拟Ajax实现无刷新
Feb 20 Javascript
JavaScript中的操作符==与===介绍
Dec 31 Javascript
js带缩略图的图片轮播效果代码分享
Sep 14 Javascript
基于AngularJS+HTML+Groovy实现登录功能
Feb 17 Javascript
Vue中的slot使用插槽分发内容的方法
Mar 01 Javascript
详解JavaScript中的函数、对象
Apr 01 Javascript
细述Javascript的加法运算符的具体使用
Oct 18 Javascript
vue配置型表格基于el-table拓展之table-plus组件
Apr 12 Vue.js
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
现磨咖啡骗局!现磨咖啡=新鲜咖啡?现磨咖啡背后的猫腻你不懂!
2019/03/28 冲泡冲煮
模仿OSO的论坛(二)
2006/10/09 PHP
php后门URL的防范
2013/11/12 PHP
PHP图片等比缩放类SimpleImage使用方法和使用实例分享
2014/04/10 PHP
php命令行用法入门实例教程
2014/10/27 PHP
PHP 获取 ping 时间的实现方法
2017/09/29 PHP
Aster vs KG BO3 第二场2.19
2021/03/10 DOTA
javascript之对系统的toFixed()方法的修正
2007/05/08 Javascript
Javascript select下拉框操作常用方法
2009/11/09 Javascript
基于jquery的动态创建表格的插件
2011/04/05 Javascript
JavaScript中的数据类型转换方法小结
2015/10/26 Javascript
javascript实现网站加入收藏功能
2015/12/16 Javascript
jQuery插件扩展测试实例
2016/06/21 Javascript
AngularJS表单验证中级篇(3)
2016/09/28 Javascript
Vue-Router实现页面正在加载特效方法示例
2017/02/12 Javascript
vue2.0多条件搜索组件使用详解
2020/03/26 Javascript
vue深入解析之render function code详解
2017/07/18 Javascript
Angular中使用better-scroll插件的方法
2018/03/27 Javascript
JS实现头条新闻的经典轮播图效果示例
2019/01/30 Javascript
浅谈vue.use()方法从源码到使用
2019/05/12 Javascript
微信小程序开发实现消息推送
2020/11/18 Javascript
小程序实现短信登录倒计时
2019/07/12 Javascript
js简单实现自动生成表格功能示例
2020/06/02 Javascript
python随机生成指定长度密码的方法
2015/04/04 Python
Python中List.count()方法的使用教程
2015/05/20 Python
Python制作数据导入导出工具
2015/07/31 Python
Python读写zip压缩文件的方法
2018/08/29 Python
python文件排序的方法总结
2020/09/13 Python
Cotton On南非:澳洲时尚平价品牌
2018/06/28 全球购物
会计助理岗位职责
2014/02/17 职场文书
学习教师法的心得体会
2014/09/03 职场文书
2014预防青少年违法犯罪工作总结
2014/12/10 职场文书
商场圣诞节活动总结
2015/05/06 职场文书
2015年环保局工作总结
2015/05/22 职场文书
班干部学习委员竞选稿
2015/11/20 职场文书
Django REST framework 限流功能的使用
2021/06/24 Python