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 相关文章推荐
js实现日期级联效果
Jan 23 Javascript
使用jquery解析XML的方法
Sep 05 Javascript
js和C# 时间日期格式转换的简单实例
May 28 Javascript
JS求解三元一次方程组值的方法
Jan 03 Javascript
原生js实现秒表计时器功能
Feb 16 Javascript
javascript 动态生成css代码的两种方法
Mar 17 Javascript
JS时间控制实现动态效果的实例讲解
Jul 31 Javascript
vue mintui-Loadmore结合实现下拉刷新和上拉加载示例
Oct 12 Javascript
React.Js添加与删除onScroll事件的方法详解
Nov 03 Javascript
微信小程序多音频播放进度条问题
Aug 28 Javascript
Vue在H5 项目中使用融云进行实时个人单聊通讯
Dec 14 Vue.js
JavaScript Dom实现轮播图原理和实例
Feb 19 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
ninety plus是什么?ninety plus咖啡好吗?
2021/03/04 新手入门
多数据表共用一个页的新闻发布
2006/10/09 PHP
PHP中的类型提示(type hinting)功能介绍
2015/07/01 PHP
PHP指定截取字符串中的中英文或数字字符的实例分享
2016/03/18 PHP
thinkphp利用模型通用数据编辑添加和删除的实例代码
2016/11/20 PHP
php开发最强大的IDE编辑的phpstorm 2020.2配置Xdebug调试的详细教程
2020/08/17 PHP
setInterval,setTimeout与jquery混用的问题
2013/04/08 Javascript
javascript实现促销倒计时+fixed固定在底部
2013/09/18 Javascript
举例讲解AngularJS中的模块
2015/06/17 Javascript
Javascript数组Array基础介绍
2016/03/13 Javascript
js改变html的原有内容实现方法
2016/10/05 Javascript
JS正则表达式验证密码格式的集中情况总结
2017/02/23 Javascript
JS 判断某变量是否为某数组中的一个值的3种方法(总结)
2017/07/10 Javascript
Vue工程模板文件 webpack打包配置方法
2017/12/26 Javascript
vue slot 在子组件中显示父组件传递的模板
2018/03/02 Javascript
详解Nuxt.js部署及踩过的坑
2018/08/07 Javascript
深入理解 Koa 框架中间件原理
2018/10/18 Javascript
Vue.js轮播图走马灯代码实例(全)
2019/05/08 Javascript
javascript设计模式 ? 原型模式原理与应用实例分析
2020/04/10 Javascript
[02:43]DOTA2亚洲邀请赛场馆攻略——带你走进东方体育中心
2018/03/19 DOTA
线程和进程的区别及Python代码实例
2015/02/04 Python
Python实现复杂对象转JSON的方法示例
2017/06/22 Python
Python字符串和字典相关操作的实例详解
2017/09/23 Python
python 实现在txt指定行追加文本的方法
2018/04/29 Python
Python发展史及网络爬虫
2019/06/19 Python
将Python文件打包成.EXE可执行文件的方法
2019/08/11 Python
解决Django中修改js css文件但浏览器无法及时与之改变的问题
2019/08/31 Python
Python3 使用map()批量的转换数据类型,如str转float的实现
2019/11/29 Python
解析html5 canvas实现背景鼠标连线动态效果代码
2019/06/17 HTML / CSS
canvas绘制太极图的实现示例
2020/04/29 HTML / CSS
英国独特的时尚和生活方式品牌:JOY
2018/03/17 全球购物
求职信写作要突出重点
2014/01/01 职场文书
生日答谢词
2015/01/05 职场文书
文明和谐家庭事迹材料(2016精选版)
2016/02/29 职场文书
有关花店创业的计划书模板
2019/08/27 职场文书
使用 Koa + TS + ESLlint 搭建node服务器的过程详解
2022/05/30 NodeJs