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 相关文章推荐
ie focus bug 解决方法
Sep 03 Javascript
js识别不同浏览器基于userAgent做判断
Jul 29 Javascript
浅谈javascript面向对象程序设计
Jan 21 Javascript
使用jQuery获取data-的自定义属性
Nov 10 Javascript
JavaScript使用正则表达式获取全部分组内容的方法示例
Jan 17 Javascript
快速使用node.js进行web开发详解
Apr 26 Javascript
Angular2 组件交互实例详解
Aug 24 Javascript
微信小程序之圆形进度条实现思路
Feb 22 Javascript
微信小程序通过保存图片分享到朋友圈功能
May 24 Javascript
echarts实现词云自定义形状的示例代码
Feb 20 Javascript
javascript数组常见操作方法实例总结【连接、添加、删除、去重、排序等】
Jun 13 Javascript
vue 使用插槽分发内容操作示例【单个插槽、具名插槽、作用域插槽】
Mar 06 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 empty() 检查一个变量是否为空
2011/11/10 PHP
php实现图片添加描边字和马赛克的方法
2014/12/10 PHP
WordPress中登陆后关闭登陆页面及设置用户不可见栏目
2015/12/31 PHP
Zend Framework缓存Cache用法简单实例
2016/03/19 PHP
ThinkPHP的常用配置选项汇总
2016/03/24 PHP
thinkphp整合微信支付代码分享
2016/11/24 PHP
thinkphp分页集成实例
2017/07/24 PHP
jquery获得同源iframe内body下标签的值的方法
2014/09/25 Javascript
JavaScript数组和循环详解
2015/04/27 Javascript
javascript每日必学之多态
2016/02/23 Javascript
详解JavaScript中基于原型prototype的继承特性
2016/05/05 Javascript
jquery插件uploadify多图上传功能实现代码
2016/08/12 Javascript
vue实现手机号码抽奖上下滚动动画示例
2017/10/18 Javascript
Vue 创建组件的两种方法小结(必看)
2018/02/23 Javascript
react以create-react-app为基础创建项目
2018/03/14 Javascript
JS实现计算小于非负数n的素数的数量算法示例
2019/02/26 Javascript
Vue插槽原理与用法详解
2019/03/05 Javascript
JQuery事件委托(适用于给动态生成的脚本元素添加事件)
2020/02/01 jQuery
js+canvas绘制图形验证码
2020/09/21 Javascript
原生JS实现弹幕效果的简单操作指南
2020/11/10 Javascript
python类参数self使用示例
2014/02/17 Python
Python中定时任务框架APScheduler的快速入门指南
2017/07/06 Python
简单易懂的python环境安装教程
2017/07/13 Python
tensorflow构建BP神经网络的方法
2018/03/12 Python
Python 获取中文字拼音首个字母的方法
2018/11/28 Python
python合并已经存在的sheet数据到新sheet的方法
2018/12/11 Python
Python实现的多进程拷贝文件并显示百分比功能示例
2019/04/09 Python
python获取Pandas列名的几种方法
2019/08/07 Python
与Django结合利用模型对上传图片预测的实例详解
2019/08/07 Python
用python生成与调用cntk模型代码演示方法
2019/08/26 Python
css3 transform过渡抖动问题解决
2020/10/23 HTML / CSS
世界最大的私人旅行指南出版商:孤独星球
2016/08/23 全球购物
《长城和运河》教学反思
2014/04/14 职场文书
遗失说明具结保证书
2015/02/26 职场文书
民间借贷借条如何写
2015/05/26 职场文书
MySQL 那些常见的错误设计规范,你都知道吗
2021/07/16 MySQL