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 相关文章推荐
jquery对象和DOM对象的区别介绍
Aug 09 Javascript
Javascript事件实例详解
Nov 06 Javascript
js写的方法实现上传图片之后查看大图
Mar 05 Javascript
浅谈JavaScript的push(),pop(),concat()方法
Jun 03 Javascript
讲解vue-router之什么是编程式路由
May 28 Javascript
Vue项目部署的实现(阿里云+Nginx代理+PM2)
Mar 26 Javascript
vue路由守卫+登录态管理实例分析
May 21 Javascript
微信小程序后端无法保持session的原因及解决办法问题
Mar 20 Javascript
详解js中的原型,原型对象,原型链
Jul 16 Javascript
解决vue-router路由拦截造成死循环问题
Aug 05 Javascript
nuxt.js 在middleware(中间件)中实现路由鉴权操作
Nov 06 Javascript
JS原生实现轮播图的几种方法
Mar 23 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
php实现计数器方法小结
2015/01/05 PHP
PHP实现动态执行代码的方法
2016/03/25 PHP
thinkphp3.2.3版本的数据库增删改查实现代码
2016/09/22 PHP
thinkphp3.2嵌入百度编辑器ueditor的实例代码
2017/07/13 PHP
tp5(thinkPHP5)框架数据库Db增删改查常见操作总结
2019/01/10 PHP
javascript屏蔽右键代码
2014/05/15 Javascript
JavaScript中标识符提升问题
2015/06/11 Javascript
js预加载图片方法汇总
2015/06/15 Javascript
jquery专业的导航菜单特效代码分享
2015/08/29 Javascript
jqgrid实现简单的单行编辑功能
2017/09/30 Javascript
微信小程序实现发送验证码按钮效果
2018/12/20 Javascript
jquery层次选择器的介绍
2019/01/18 jQuery
vue如何实现自定义底部菜单栏
2019/07/01 Javascript
JavaScript实现更换背景图片
2019/10/18 Javascript
解决微信授权成功后点击按返回键出现空白页和报错的问题
2020/06/08 Javascript
Python合并两个字典的常用方法与效率比较
2015/06/17 Python
基于Python_脚本CGI、特点、应用、开发环境(详解)
2017/05/23 Python
Python正则表达式非贪婪、多行匹配功能示例
2017/08/08 Python
浅谈python下tiff图像的读取和保存方法
2018/12/04 Python
在python中将字符串转为json对象并取值的方法
2018/12/31 Python
Python判断两个文件是否相同与两个文本进行相同项筛选的方法
2019/03/01 Python
详解Python并发编程之创建多线程的几种方法
2019/08/23 Python
Python中join()函数多种操作代码实例
2020/01/13 Python
Xadmin+rules实现多选行权限方式(级联效果)
2020/04/07 Python
HTML5单页面手势滑屏切换原理分析
2017/07/10 HTML / CSS
Chain Reaction Cycles芬兰:世界上最大的在线自行车商店
2017/12/06 全球购物
ColourPop美国官网:卡拉泡泡,洛杉矶彩妆品牌
2019/04/28 全球购物
教育局长自荐信范文
2013/12/22 职场文书
校园报刊亭创业计划书
2014/01/02 职场文书
教师试用期自我鉴定
2014/02/12 职场文书
对祖国的寄语大全
2014/04/11 职场文书
我的中国梦演讲稿高中篇
2014/08/19 职场文书
2014年督导工作总结
2014/11/19 职场文书
导游带团欢迎词
2015/09/30 职场文书
详解PHP用mb_string处理windows中文字符
2021/05/26 PHP
Python实现双向链表基本操作
2022/05/25 Python