博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
jsTree使用记录
阅读量:5943 次
发布时间:2019-06-19

本文共 2632 字,大约阅读时间需要 8 分钟。

1. ajax请求生成jsTree

 

[javascript]   
 
  1. <span style="font-size:14px;"><script>  
  2.       
  3.         var r = []; // 权限树中被选中的叶子节点  
  4.         var currentGroupId;  
  5.   
  6.         function showPermitTree(id) {  
  7.             currentGroupId = id;  
  8.             $.ajax({  
  9.                 data : "currentGroupId=" + id,  
  10.                 type : "POST",  
  11.                 //dataType : 'json',  
  12.                 url : "/test/permittree",  
  13.                 error : function(data) {  
  14.                     alert("出错了!!:" + data);  
  15.                 },  
  16.                 success : function(data) {  
  17.                     //alert("success:" + data);  
  18.                     createPermitTree(data);  
  19.                 }  
  20.             });  
  21.               
  22.             ${
    'buttonDiv'}.style.display="";  
  23.         }  
  24.   
  25.         function createPermitTree(datastr) {  
  26.             datastr = eval("" + datastr + "");  
  27.             $('#permitTree').jstree({  
  28.                 'plugins' : [ "wholerow", "checkbox", "types" ],  
  29.                 'core' : {  
  30.                     "themes" : {  
  31.                         "responsive" : false  
  32.                     },  
  33.                     'data' : datastr  
  34.                 },  
  35.                 "types" : {  
  36.                     "default" : {  
  37.                         "icon" : "fa fa-folder icon-state-warning icon-lg"  
  38.                     },  
  39.                     "file" : {  
  40.                         "icon" : "fa fa-file icon-state-warning icon-lg"  
  41.                     }  
  42.                 }  
  43.             });  
  44.         }  
  45.   
  46.         // listen for event  
  47.         $('#permitTree').on('changed.jstree', function(e, data) {  
  48.             r = [];  
  49.             var i, j;  
  50.             for (i = 0, j = data.selected.length; i < j; i++) {  
  51.                 var node = data.instance.get_node(data.selected[i]);  
  52.                 if (data.instance.is_leaf(node)) {  
  53.                     r.push(node.id);  
  54.                 }  
  55.             }  
  56.             //alert('Selected: ' + r.join('@@'));  
  57.         })  
  58.           
  59.         function saveTree() {  
  60.             $.ajax({  
  61.                 data : {
    'currentGroupId' : currentGroupId,  
  62.                         'selectedNodes' : r.join('@@')},  
  63.                 type : "POST",  
  64.                 //dataType : 'json',  
  65.                 url : "/test/savetree",  
  66.                 error : function(data) {  
  67.                     alert("出错了!!:" + data);  
  68.                 },  
  69.                 success : function(data) {  
  70.                     alert("保存成功!");  
  71.                 }  
  72.             });  
  73.         }  
  74.           
  75.     </script></span><span style="font-size:24px;">  
  76. </span>  

 

直接把项目中一段代码copy过来了,这是一棵带复选框的树。页面有地方点击之后触发showPermitTree(id)函数,发送ajax请求给后台,项目使用的是springmvc框架,后台返回JSONArray.toString。

 

2. jsTree change事件

上面代码中含change事件。把所有选中的节点的id放到一个数组中。

页面上有个按钮,点击后触发saveTree函数,发请求给后台,把选中的节点的id发给后台。

 

3.jsTree自定义contextmenu

 

[javascript]   
 
  1. <script>  
  2. $('#jstree').jstree({  
  3.     core : {  
  4.         check_callback : true,  
  5.         data : [  
  6.             { "id" : "1", "parent" : "#", "text" : "root" },  
  7.             { "id" : "2", "parent" : "1", "text" : "child 1" },  
  8.             { "id" : "3", "parent" : "1", "text" : "child 2" }  
  9.         ],  
  10.     },  
  11.     plugins : ["wholerow","contextmenu"],  
  12.     "contextmenu": {    
  13.             "items": {    
  14.                 "create": null,    
  15.                 "rename": null,    
  16.                 "remove": null,    
  17.                 "ccp": null,    
  18.                 "add": {    
  19.                     "label": "add",    
  20.                     "action": function (obj) {  
  21.                         var inst = jQuery.jstree.reference(obj.reference);    
  22.                         var clickedNode = inst.get_node(obj.reference);   
  23.                         alert("add operation--clickedNode's id is:" + clickedNode.id);  
  24.                     }    
  25.                 },    
  26.                 "delete": {    
  27.                     "label": "delete",    
  28.                     "action": function (obj) {  
  29.                         var inst = jQuery.jstree.reference(obj.reference);    
  30.                         var clickedNode = inst.get_node(obj.reference);   
  31.                         alert("delete operation--clickedNode's id is:" + clickedNode.id);  
  32.                     }    
  33.                 }    
  34.             }    
  35.         }   
  36. }).on("ready.jstree", function (e, data) {  
  37.   data.instance.open_all();  
  38. });  
  39. </script>   
这段代码使用jsTree的contextmenu plugin,去掉jsTree自带的菜单,并自定义菜单

 

 
8

转载地址:http://ecwxx.baihongyu.com/

你可能感兴趣的文章
软件工程之构建之法
查看>>
UVa 10902
查看>>
Mathf.Sin正弦
查看>>
禁止浏览器缓存js
查看>>
【Redis】安装PHP的redis驱动(二)
查看>>
什么是序列化,为什么要序列化
查看>>
Java保留小数点后有效数字
查看>>
C++中一些类和数据结构的大小的总结
查看>>
mysql开启binlog
查看>>
ctrl + z fg bg
查看>>
工作流引擎Oozie(一):workflow
查看>>
struct框架
查看>>
Deep Learning(深度学习)相关网站
查看>>
设置Eclipse编码方式
查看>>
分布式系统唯一ID生成方案汇总【转】
查看>>
Cross-compilation using Clang
查看>>
并查集hdu1232
查看>>
oracle进行字符串拆分并组成数组
查看>>
100多个基础常用JS函数和语法集合大全
查看>>
Java8 lambda表达式10个示例
查看>>