多功能jQuery树插件zTree实现权限列表简单实例


Posted in Javascript onJuly 12, 2016

zTree 是一个依靠jQuery 实现的多功能 “树插件”。优异的性能、灵活的配置、多种功能的组合是 zTree 最大优点。

zTree官网
zTreeAPI下载链接 

页面主要引入一下几个文件: 

<link type="text/css" rel="stylesheet" href="zTree/zTreeStyle.css" />
<script type="text/javascript" src="js/jquery.ztree.core-3.5.js"></script>
<script type="text/javascript" src="js/jquery.ztree.excheck-3.5.js"></script>

html页面: 

<div class="edit_content">
      <div class="qxlb">
        <div class="add_title"> 
          <span>权限列表</span>
        </div>
        <div class="qxlb_content">
        <ul id="tree" class="ztree"></ul>
        </div>
      </div>
 </div>

核心js:

<SCRIPT type="text/javascript">
var zTree;
//创建树型结构
function createTree() {
  var setting = {
    check:{
      enable:true
    },
    view: {
      dblClickExpand: true,
      expandSpeed: ""
    },
    //异步加载
    async: {
      enable: true,//设置是否异步加载
      url:"<%=path%>/role/getResourcesList.do", //设置异步获取节点的 URL 地址
      otherParam: [ "roleId", '${updateRole.id}']
      
    },
    
    //这个data里面的pIdKey,idKey,name等等之类的都是对应后台查出的字段名字,
     在sql中写好或者在拼接json的时候先拼接好,前太接收的时候只要对应一直就可以了
    data: {
      simpleData: {
        enable: true,
        pIdKey: "PARENTID",
        idKey: "ID"
      },
        key: {
          checked: "CHECKED",
          name:"NAME"
        }
    },
    callback: {
     onAsyncSuccess: zTreeOnAsyncSuccess 
  } 
  };
  //初始化  
  zTree = $.fn.zTree.init($("#tree"), setting);  
  zTree.expandAll(true);
}
/* 异步加载无法展开tree 默认展开一级菜单 */
var firstAsyncSuccessFlag = 0;
function zTreeOnAsyncSuccess(event, treeId, msg) { 
if (firstAsyncSuccessFlag == 0) { 
     try { 
         //调用默认展开第一个结点 
         var selectedNode = zTree.getSelectedNodes(); 
         var nodes = zTree.getNodes(); 
         zTree.expandNode(nodes[0], true); 
         var childNodes = zTree.transformToArray(nodes[0]); 
         zTree.expandNode(childNodes[1], true); 
         zTree.selectNode(childNodes[1]); 
         var childNodes1 = zTree.transformToArray(childNodes[1]); 
         zTree.checkNode(childNodes1[1], true, true); 
         firstAsyncSuccessFlag = 1; 
      } catch (err) { 
      
      } 
   } 
}

$(function(){
  //页面加载完成创建树
  createTree();  
});

function submitRole(){
  //获取选中的节点,传到后台
  var nodes = zTree.getCheckedNodes();
  var ids = [];
  for(var i=0,l=nodes.length;i<l;i++){
    ids[ids.length] = nodes[i].ID;
  }
  //var _resourcesIds=ids.join(",");
  document.getElementById("hidden_resourceList").value=ids.join(",");
      
  //$("#resourcesRoleListForm").submit();
}
</SCRIPT>

 其中数据通过后台递归查询实现,以json的形式传到前台,进行接收。更多的内容可以参考API,里面的例子很详细。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Jquery 分页插件之Jquery Pagination
Aug 25 Javascript
jQuery语法小结(超实用)
Dec 31 Javascript
JS获取元素多层嵌套思路详解
May 16 Javascript
Angular 理解module和injector,即依赖注入
Sep 07 Javascript
微信小程序 地图定位简单实例
Oct 14 Javascript
JavaScript+HTML5实现的日期比较功能示例
Jul 12 Javascript
如何理解Vue的v-model指令的使用方法
Jul 19 Javascript
详解VUE里子组件如何获取父组件动态变化的值
Dec 26 Javascript
详解bootstrap-fileinput文件上传控件的亲身实践
Mar 21 Javascript
jquery实现自定义树形表格的方法【自定义树形结构table】
Jul 12 jQuery
vue 组件开发原理与实现方法详解
Nov 29 Javascript
Vue通过阿里云oss的url连接直接下载文件并修改文件名的方法
Dec 25 Vue.js
基于BootStrap环境写jQuery tabs插件
Jul 12 #Javascript
Angular 路由route实例代码
Jul 12 #Javascript
javascript中获取class的简单实现
Jul 12 #Javascript
springMVC结合AjaxForm上传文件
Jul 12 #Javascript
require简单实现单页应用程序(SPA)
Jul 12 #Javascript
require.js配合插件text.js实现最简单的单页应用程序
Jul 12 #Javascript
javascript中Date对象应用之简易日历实现
Jul 12 #Javascript
You might like
用PHP进行MySQL删除记录操作代码
2008/06/07 PHP
php解析http获取的json字符串变量总是空白null
2015/03/02 PHP
PHP实现补齐关闭的HTML标签
2016/03/22 PHP
PHP文件上传小程序 适合初学者学习!
2019/05/23 PHP
IE8 引入跨站数据获取功能说明
2008/07/22 Javascript
ExtJS4 Grid改变单元格背景颜色及Column render学习
2013/02/06 Javascript
给Flash加一个超链接(推荐使用透明层)兼容主流浏览器
2013/06/09 Javascript
js阻止默认浏览器行为与冒泡行为的实现代码
2016/05/15 Javascript
AngularJS通过$location获取及改变当前页面的URL
2016/09/23 Javascript
针对后台列表table拖拽比较实用的jquery拖动排序
2016/10/10 Javascript
使用jquery如何获取时间
2016/10/13 Javascript
jQuery使用动画队列自定义动画操作示例
2018/06/16 jQuery
vue-cli3环境变量与分环境打包的方法示例
2019/02/18 Javascript
小程序云开发教程如何使用云函数实现点赞功能
2019/05/18 Javascript
利用Electron简单撸一个Markdown编辑器的方法
2019/06/10 Javascript
VueCli3.0中集成MockApi的方法示例
2019/07/05 Javascript
React路由鉴权的实现方法
2019/09/05 Javascript
vue3.0中使用postcss-pxtorem的具体方法
2019/11/20 Javascript
在实例中重学JavaScript事件循环
2020/12/03 Javascript
[03:56]显微镜下的DOTA2第十一期——鬼畜的死亡先知播音员
2014/06/23 DOTA
从零学Python之入门(四)运算
2014/05/27 Python
Python爬取国外天气预报网站的方法
2015/07/10 Python
简介Python设计模式中的代理模式与模板方法模式编程
2016/02/02 Python
Python eval的常见错误封装及利用原理详解
2019/03/26 Python
对Python中画图时候的线类型详解
2019/07/07 Python
分享PyCharm最新激活码(真永久激活方法)不用每月找安装参数或最新激活码了
2020/12/27 Python
大学生党员学习焦裕禄精神思想汇报
2014/09/10 职场文书
财务科长个人对照检查材料
2014/09/18 职场文书
企业法人代表证明书
2014/09/27 职场文书
2014年手术室工作总结
2014/11/26 职场文书
python基础之文件处理知识总结
2021/05/23 Python
SQL注入的实现以及防范示例详解
2021/06/02 MySQL
Python爬虫实战之爬取京东商品数据并实实现数据可视化
2021/06/07 Python
与Windows10相比Windows11有哪些改进?值不值得升级?
2021/11/21 数码科技
Java 写一个简单的图书管理系统
2022/04/26 Java/Android
浅谈MySql update会锁定哪些范围的数据
2022/06/25 MySQL