jsTree使用记录实例


Posted in Javascript onDecember 01, 2016

1. ajax请求生成jsTree

[javascript] view plain copy
<span style="font-size:14px;"><script> 
 var r = []; // 权限树中被选中的叶子节点 
 var currentGroupId; 
 function showPermitTree(id) { 
 currentGroupId = id; 
 $.ajax({ 
 data : "currentGroupId=" + id, 
 type : "POST", 
 //dataType : 'json', 
 url : "/test/permittree", 
 error : function(data) { 
  alert("出错了!!:" + data); 
 }, 
 success : function(data) { 
  //alert("success:" + data); 
  createPermitTree(data); 
 } 
 }); 
 ${'buttonDiv'}.style.display=""; 
 } 
 function createPermitTree(datastr) { 
 datastr = eval("" + datastr + ""); 
 $('#permitTree').jstree({ 
 'plugins' : [ "wholerow", "checkbox", "types" ], 
 'core' : { 
  "themes" : { 
  "responsive" : false 
  }, 
  'data' : datastr 
 }, 
 "types" : { 
  "default" : { 
  "icon" : "fa fa-folder icon-state-warning icon-lg" 
  }, 
  "file" : { 
  "icon" : "fa fa-file icon-state-warning icon-lg" 
  } 
 } 
 }); 
 } 
 // listen for event 
 $('#permitTree').on('changed.jstree', function(e, data) { 
 r = []; 
 var i, j; 
 for (i = 0, j = data.selected.length; i < j; i++) { 
 var node = data.instance.get_node(data.selected[i]); 
 if (data.instance.is_leaf(node)) { 
  r.push(node.id); 
 } 
 } 
 //alert('Selected: ' + r.join('@@')); 
 }) 
 function saveTree() { 
 $.ajax({ 
 data : {'currentGroupId' : currentGroupId, 
  'selectedNodes' : r.join('@@')}, 
 type : "POST", 
 //dataType : 'json', 
 url : "/test/savetree", 
 error : function(data) { 
  alert("出错了!!:" + data); 
 }, 
 success : function(data) { 
  alert("保存成功!"); 
 } 
 }); 
 } 
 </script></span><span style="font-size:24px;"> 
</span>

jsTree使用记录实例

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

2. jsTree change事件

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

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

3.jsTree自定义contextmenu

[javascript] view plain copy
<script> 
$('#jstree').jstree({ 
 core : { 
 check_callback : true, 
 data : [ 
 { "id" : "1", "parent" : "#", "text" : "root" }, 
 { "id" : "2", "parent" : "1", "text" : "child 1" }, 
 { "id" : "3", "parent" : "1", "text" : "child 2" } 
 ], 
 }, 
 plugins : ["wholerow","contextmenu"], 
 "contextmenu": { 
 "items": { 
 "create": null, 
 "rename": null, 
 "remove": null, 
 "ccp": null, 
 "add": { 
  "label": "add", 
  "action": function (obj) { 
  var inst = jQuery.jstree.reference(obj.reference); 
  var clickedNode = inst.get_node(obj.reference); 
  alert("add operation--clickedNode's id is:" + clickedNode.id); 
  } 
 }, 
 "delete": { 
  "label": "delete", 
  "action": function (obj) { 
  var inst = jQuery.jstree.reference(obj.reference); 
  var clickedNode = inst.get_node(obj.reference); 
  alert("delete operation--clickedNode's id is:" + clickedNode.id); 
  } 
 } 
 } 
 } 
}).on("ready.jstree", function (e, data) { 
 data.instance.open_all(); 
}); 
</script>

这段代码使用jsTree的contextmenu plugin,去掉jsTree自带的菜单,并自定义菜单

jsTree使用记录实例

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

Javascript 相关文章推荐
ExtJS Store的数据访问与更新问题
Apr 28 Javascript
JavaScript初学者应注意的七个细节小结
Jan 30 Javascript
JS关键字球状旋转效果的实例代码
Nov 29 Javascript
jquery prop的使用介绍及与attr的区别
Dec 19 Javascript
原生javaScript做得动态表格(注释写的很清楚)
Dec 29 Javascript
Javscript删除数组中指定元素并返回新数组
Mar 06 Javascript
JS使用cookie实现DIV提示框只显示一次的方法
Nov 05 Javascript
如何使用PHP+jQuery+MySQL实现异步加载ECharts地图数据(附源码下载)
Feb 23 Javascript
JS中递归函数
Jun 17 Javascript
利用js+css+html实现固定table的列头不动
Dec 08 Javascript
Javascript this 函数深入详解
Dec 13 Javascript
JS如何生成一个不重复的ID的函数
Dec 25 Javascript
Vue.JS入门教程之列表渲染
Dec 01 #Javascript
Vue.JS入门教程之处理表单
Dec 01 #Javascript
利用js获取下拉框中所选的值
Dec 01 #Javascript
js微信扫描二维码登录网站技术原理
Dec 01 #Javascript
Bootstrap的class样式小结
Dec 01 #Javascript
BootStrap框架个人总结(bootstrap框架、导航条、下拉菜单、轮播广告carousel、栅格系统布局、标签页tabs、模态框、菜单定位)
Dec 01 #Javascript
AngularJS中的JSONP实例解析
Dec 01 #Javascript
You might like
这部番真是良心,画质好到像风景区,剧情让人跟着小公会热血沸腾
2020/03/10 日漫
用PHP和ACCESS写聊天室(四)
2006/10/09 PHP
php 字符过滤类,用于过滤各类用户输入的数据
2009/05/27 PHP
PHP 强制下载文件代码
2010/10/24 PHP
判断PHP数组是否为空的代码
2011/09/08 PHP
PHP登录环节防止sql注入的方法浅析
2014/06/30 PHP
php通过PHPExcel导入Excel表格到MySQL数据库的简单实例
2016/10/29 PHP
jQuery autocomplete插件修改
2009/04/17 Javascript
javascript 验证日期的函数
2010/03/18 Javascript
JavaScript高级程序设计 阅读笔记(二十) js错误处理
2012/08/14 Javascript
jquery ui dialog实现弹窗特效的思路及代码
2013/08/03 Javascript
jQuery操作cookie方法实例教程
2014/11/25 Javascript
基于jquery步骤进度条源码分享
2015/11/12 Javascript
js实现网页图片延时加载 提升网页打开速度
2016/01/26 Javascript
手机端 HTML5使用photoswipe.js仿微信朋友圈图片放大效果
2016/08/25 Javascript
vue的.vue文件是怎么run起来的(vue-loader)
2018/12/10 Javascript
vue 动态给每个页面添加title、关键词和描述的方法
2020/08/28 Javascript
如何在vue中使用百度地图添加自定义覆盖物(水波纹)
2020/11/03 Javascript
vue浏览器返回监听的具体步骤
2021/02/03 Vue.js
Python中apply函数的用法实例教程
2014/07/31 Python
python 对给定可迭代集合统计出现频率,并排序的方法
2018/10/18 Python
设置python3为默认python的方法
2018/10/31 Python
python kafka 多线程消费者&amp;手动提交实例
2019/12/21 Python
tensorflow 变长序列存储实例
2020/01/20 Python
python中urllib.request和requests的使用及区别详解
2020/05/05 Python
Python 读取位于包中的数据文件
2020/08/07 Python
html5 跨文档消息传输示例探讨
2013/04/01 HTML / CSS
红色康乃馨酒店:Red Carnation Hotels
2017/06/22 全球购物
澳大利亚在线高跟鞋商店:Shoe Me
2019/11/19 全球购物
Visual-Click葡萄牙:欧洲领先的在线眼镜商
2020/02/17 全球购物
初中女生自我鉴定
2013/12/19 职场文书
机电专业求职信
2014/06/14 职场文书
2015年幼儿园保育员工作总结
2015/04/23 职场文书
中国梦宣传标语口号
2015/12/26 职场文书
2019个人工作自我评价范文(3篇)
2019/09/19 职场文书
分析ZooKeeper分布式锁的实现
2021/06/30 Java/Android