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打字效果实现方法(附demo源码下载)
Dec 18 Javascript
jQuery实现只允许输入数字和小数点的方法
Mar 02 Javascript
js纯数字逐一停止显示效果的实现代码
Mar 16 Javascript
jQuery中的一些常见方法小结(推荐)
Jun 13 Javascript
利用vue写todolist单页应用
Dec 15 Javascript
输入框点击时边框变色效果的实现方法
Dec 26 Javascript
jQuery基于ajax实现页面加载后检查用户登录状态的方法
Feb 10 Javascript
js实现产品缩略图效果
Mar 10 Javascript
VueJs 将接口用webpack代理到本地的方法
Nov 27 Javascript
js Array.slice的8种不同用法示例
Jul 10 Javascript
微信小程序实现下拉框功能
Jul 16 Javascript
vue的webcamjs集成方式
Nov 16 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
骨王战斗力在公会成员中排不进前五,却当选了会长,原因竟是这样
2020/03/02 日漫
什么是短波收听SWL
2021/03/01 无线电
PHP简单留言本功能实现代码
2017/06/09 PHP
php设计模式之职责链模式定义与用法经典示例
2019/09/19 PHP
常见的5个PHP编码小陋习以及优化实例讲解
2021/02/27 PHP
用js自动判断浏览器分辨率的代码
2007/01/28 Javascript
[原创]js与自动伸缩图片 自动缩小图片的多浏览器兼容的方法总结
2007/03/12 Javascript
基于jquery用于查询操作的实现代码
2010/05/10 Javascript
JQuery中getJSON的使用方法
2010/12/13 Javascript
Express作者TJ告别Node.js奔向Go
2014/07/14 Javascript
封装好的一个万能检测表单的方法
2015/01/21 Javascript
基于Javascript实现倒计时功能
2016/02/22 Javascript
JavaScript手风琴页面制作
2017/05/17 Javascript
图片加载完成再执行事件的实例
2017/11/16 Javascript
Vue.js在数组中插入重复数据的实现代码
2017/11/17 Javascript
Vue表单输入绑定的示例代码
2018/11/01 Javascript
JavaScript中关于base64的一些事
2019/05/06 Javascript
js打开word文档预览操作示例【不是下载】
2019/05/23 Javascript
Angular8引入百度Echarts进行图表分析的实现代码
2019/11/27 Javascript
React Native中ScrollView组件轮播图与ListView渲染列表组件用法实例分析
2020/01/06 Javascript
Python中字符串的处理技巧分享
2016/09/17 Python
AI人工智能 Python实现人机对话
2017/11/13 Python
Python实现字典按照value进行排序的方法分析
2017/12/23 Python
Python cookbook(数据结构与算法)筛选及提取序列中元素的方法
2018/03/19 Python
python操作文件的参数整理
2019/06/11 Python
python爬虫中多线程的使用详解
2019/09/23 Python
利用Tensorboard绘制网络识别准确率和loss曲线实例
2020/02/15 Python
基于python检查SSL证书到期情况代码实例
2020/04/04 Python
捷克汽车配件和工具销售网站:TorriaCars
2018/02/26 全球购物
介绍一下gcc特性
2012/01/20 面试题
介绍一下如何优化MySql
2016/12/20 面试题
优秀党员主要事迹
2014/01/19 职场文书
读后感作文评语
2014/12/25 职场文书
2015社区个人工作总结范文
2015/05/13 职场文书
mybatis调用sqlserver存储过程返回结果集的方法
2021/05/08 SQL Server
CSS Transition通过改变Height实现展开收起元素
2021/08/07 HTML / CSS