最近使用到了jstree(v3.3.4)这个插件(官网:https://www.jstree.com/),在这里记录下我的使用过程的一些技巧和问题。

1、 获取数据

一般实际项目中用到的数据都是ajax请求后台的,所以格式参考的是jstree的API中的$.jstree.defaults.core.data。因为使用的ajax是封装好的,所以参考function的格式。

$('#tree').jstree({
'core' : {
'data' : function (obj, callback) {
callback.call(this, ['Root 1', 'Root 2']);
}
}
});
2、data格式

为了方便,获取到的数据整合为

{ "id" : "ajson1", "parent" : "#", "text" : "Simple root node", "icon" : 0 , 'state' : { 'selected' : true, 'opened' : true }},
{ "id" : "ajson2", "parent" : "ajson1", "text" : "Root node 1" , "icon" : 1 },
{ "id" : "ajson3", "parent" : "ajson2", "text" : "Child 1" , "icon" : 2 },
{ "id" : "ajson4", "parent" : "ajson2", "text" : "Child 2" , "icon" : 2 },
{ "id" : "ajson5", "parent" : "ajson4", "text" : "Child 3" , "icon" : 3 }
加上icon是为了方便对应types对应。同时根节点的parent的值需要为"#"。
'state' : { 'selected' : true, 'opened' : true } //选中和展开

3、types

"types" : {
"0" : {
"max_children" : 1, //最多孩子树
"max_depth" : 4, //最大子节点深度
"valid_children" : ["2"] //可以拥有孩子树的节点
},
"1" : {
"icon" : "/static/3.3.4/assets/images/tree_icon.png", //icon的图片位置
"valid_children" : []
},
"2" : {
"icon" : false, //不要icon
"valid_children" : []
},
"3" : {
"icon" : "glyphicon glyphicon-file", //icon的className
"valid_children" : []
}
}
4、get_selected([full])

获取当前jstree选中的节点属性,若full为true,只返回id,否则返回所有属性(包括父节点、所有父节点、属于树的第几级等)。在使用search时很好用:

$('#tree').jstree(true).search(value); //搜索的内容
5、插件plugins

jstree自带了一些插件,只要在plugins中添加即可。

"plugins" : [
"checkbox", //添加checkbox
"contextmenu", //选中右键文本内容
"dnd", //是否可以拖拽
"massload",
"search", //搜索
"sort", //排序
"state", //在刷新之后保持刷新之前状态(比如选中和展开)
"types", //设置types
"unique",
"wholerow", //选中整行
"changed",
"conditionalselect"
]
6、其他

还有一些其他事件,比如:

$("#tree").jstree({...}).on('loaded.jstree', function(e, data){
var inst = data.instance;
var obj = inst.get_node(e.target.firstChild.firstChild.lastChild);

inst.select_node(obj);
});
http://blog.csdn.net/you8626/...默认选中根节点,试了有效,不过我请求到的数据能够判断出根节点,可以直接写state参数,所以没用上。

$("#tree").on('ready.jstree', function(e, data){}

最新文章

  1. C#基础篇 - 理解委托和事件
  2. 利用dedecms autoindex让文章列表加上序列号
  3. 《ASP.NET1200例》未能找到元数据文件解决办法
  4. sql 基础练习题
  5. 剑指Offer:面试题4——替换空格(java实现)
  6. yii泛域名
  7. Android重力感应开发
  8. air2调用本地exe的文章
  9. nyoj 138 找球号(二)(哈希)
  10. 20155304 2016-2017-2 《Java程序设计》第六周学习总结
  11. Linux 结构化命令
  12. python 全局变量
  13. 微信小程序本地的域名“不在以下request合法域名列表中”错误处理方法
  14. systemctl添加开机启动
  15. [Oracle] Data Pump 详细使用教程(1)- 总览
  16. Jenkins 传递自定义的参数
  17. MIT 6.824 lab1:mapreduce
  18. SDOI 2017 天才黑客
  19. C#文件监控对象FileSystemWatcher实例,通过监控文件创建、修改、删除、重命名对服务器数据进行实时备份
  20. Leetcode题库——14.最长公共前缀

热门文章

  1. 深入研究RocketMQ生产者发送消息的底层原理
  2. Processing 网格纹理制作(棋盘格)
  3. Ubuntu16.04+Tensorflow+CUDA9.0+cuDNN7.0 环境简明搭建指南
  4. 从GitHub建站迁移到服务器(Java环境)
  5. Linux软件管理常用命令和选项
  6. 音频数据增强及python实现
  7. P3431 [POI2005]AUT-The Bus
  8. 【题解】CF940F Machine Learning
  9. 题解【[USACO18FEB]New Barns 】
  10. JavaScript reduce()的使用