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小游戏实现代码
Aug 19 Javascript
Ubuntu 11.10 安装Node.js的方法
Nov 30 Javascript
测试IE浏览器对JavaScript的AngularJS的兼容性
Jun 19 Javascript
JS仿京东移动端手指拨动切换轮播图效果
Apr 10 Javascript
使用openSpeDiv方法实现Ecshop登录弹窗框效果
Mar 13 Javascript
JS实现求数组起始项到终止项之和的方法【基于数组扩展函数】
Jun 13 Javascript
JavaScript通过mouseover()实现图片变大效果的示例
Dec 20 Javascript
spirngmvc js传递复杂json参数到controller的实例
Mar 29 Javascript
three.js实现圆柱体
Dec 30 Javascript
JavaScript编写开发动态时钟
Jul 29 Javascript
Element中Slider滑块的具体使用
Jul 29 Javascript
Vue 根据条件判断van-tab的显示方式
Aug 03 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
全国FM电台频率大全 - 11 浙江省
2020/03/11 无线电
QueryPath PHP 中的jQuery
2010/04/11 PHP
PHP开发中常用的字符串操作函数
2011/02/08 PHP
PHP开发框架kohana中处理ajax请求的例子
2014/07/14 PHP
PHP链接MySQL的常用扩展函数
2014/10/23 PHP
CodeIgniter配置之SESSION用法实例分析
2016/01/19 PHP
PHP绕过open_basedir限制操作文件的方法
2018/06/10 PHP
php微信开发之谷歌测距
2018/06/14 PHP
使用PHPExcel导出Excel表
2018/09/08 PHP
PHP安装BCMath扩展的方法
2019/02/13 PHP
单独使用CKFinder选择图片的方法
2010/08/21 Javascript
为jQuery.Treeview添加右键菜单的实现代码
2010/10/22 Javascript
详谈Angular 2+ 的表单(一)之模板驱动型表单
2017/04/25 Javascript
js单页hash路由原理与应用实战详解
2017/08/14 Javascript
基于js 本地存储(详解)
2017/08/16 Javascript
vue做移动端适配最佳解决方案(亲测有效)
2018/09/04 Javascript
elementUI table表格动态合并的示例代码
2019/05/15 Javascript
react实现antd线上主题动态切换功能
2019/08/12 Javascript
关于vue路由缓存清除在main.js中的设置
2019/11/06 Javascript
JavaScript实现移动端带transition动画的轮播效果
2020/03/24 Javascript
[51:27]LGD vs Liquid 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/19 DOTA
使用Python开发windows GUI程序入门实例
2014/10/23 Python
全面了解python中的类,对象,方法,属性
2016/09/11 Python
利用Django提供的ModelForm增删改数据的方法
2019/01/06 Python
django框架实现一次性上传多个文件功能示例【批量上传】
2019/06/19 Python
简单了解python调用其他脚本方法实例
2020/03/26 Python
Python正则表达式如何匹配中文
2020/05/27 Python
Python爬虫自动化爬取b站实时弹幕实例方法
2021/01/26 Python
Perfume’s Club意大利官网:欧洲美妆电商
2019/05/03 全球购物
酒店服务与管理毕业生求职信
2013/11/02 职场文书
大学生社会实践活动总结
2014/07/03 职场文书
语文教师个人工作总结
2015/02/06 职场文书
护士自荐信范文
2015/03/25 职场文书
2015年纪检监察工作总结
2015/04/08 职场文书
用CSS3画一个爱心
2021/04/27 HTML / CSS
Python实现将多张图片合成MP4视频并加入背景音乐
2022/04/28 Python