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 使用手册(四)
Sep 23 Javascript
深入理解JavaScript系列(14) 作用域链介绍(Scope Chain)
Apr 12 Javascript
JS字符串截取函数实例
Dec 27 Javascript
Javasipt:操作radio标签详解
Dec 30 Javascript
Jquery 获取指定标签的对象及属性的设置与移除
May 29 Javascript
JavaScript使用循环和分割来替换和删除元素实例
Oct 13 Javascript
JavaScript返回当前会话cookie全部键值对照的方法
Apr 03 Javascript
详解vue中computed 和 watch的异同
Jun 30 Javascript
Vue2.0 实现歌手列表滚动及右侧快速入口功能
Aug 08 Javascript
详解BootStrap表单验证中重置BootStrap-select验证提示不清除的坑
Sep 17 Javascript
微信小程序如何获取用户头像和昵称
Sep 23 Javascript
JavaScript实现多层颜色选项卡嵌套
Sep 21 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
百度站点地图(百度sitemap)生成方法分享
2014/01/09 PHP
PHP实现多文件上传的方法
2015/07/08 PHP
详解PHP中的状态模式编程
2015/08/11 PHP
简单的前端js+ajax 购物车框架(入门篇)
2011/10/29 Javascript
window.showModalDialog()返回值的学习心得总结
2014/01/07 Javascript
清除div下面的所有标签的方法
2014/02/17 Javascript
解决jquery无法找到其他父级子集问题的方法
2016/05/10 Javascript
限制文本框只能输入数字||只能是数字和小数点||只能是整数和浮点数
2016/05/27 Javascript
JavaScript构建自己的对象示例
2016/11/29 Javascript
Vue实现购物车功能
2017/04/27 Javascript
JavaScript运动框架 解决速度正负取整问题(一)
2017/05/17 Javascript
React + webpack 环境配置的方法步骤
2017/09/07 Javascript
AngularJS中下拉框的高级用法示例
2017/10/11 Javascript
vue-swiper的使用教程
2018/08/30 Javascript
JQuery Ajax执行跨域请求数据的解决方案
2018/12/10 jQuery
vue实现一拉到底的滑动验证
2019/07/25 Javascript
JavaScript的变量声明与声明提前用法实例分析
2019/11/26 Javascript
tracking.js实现前端人脸识别功能
2020/04/16 Javascript
[36:05]DOTA2亚洲邀请赛 3.31 小组赛 A组 Liquid vs Optic
2018/04/01 DOTA
django之session与分页(实例讲解)
2017/11/13 Python
python使用pdfminer解析pdf文件的方法示例
2018/12/20 Python
Python OS模块实例详解
2019/04/15 Python
Python3之不使用第三方变量,实现交换两个变量的值
2019/06/26 Python
Pandas中Series和DataFrame的索引实现
2019/06/27 Python
django 做 migrate 时 表已存在的处理方法
2019/08/31 Python
python opencv实现信用卡的数字识别
2020/01/12 Python
不到20行实现Python代码即可制作精美证件照
2020/04/24 Python
HTML5 客户端数据库简易使用:IndexedDB
2019/12/19 HTML / CSS
澳大利亚在线百货商店:Real Smart
2017/08/13 全球购物
《学棋》教后反思
2014/04/14 职场文书
学习型班组申报材料
2014/05/31 职场文书
2015年教学管理工作总结
2015/05/20 职场文书
关于做家务的心得体会
2016/01/23 职场文书
《清澈的湖水》教学反思
2016/02/17 职场文书
祝福语集锦:送给闺蜜的生日祝福语
2019/10/08 职场文书
判断Python中的Nonetype类型
2021/05/25 Python