文档章节

jsTree基本使用(新增,修改,删除,移动,点击,加载默认选中根节点,异步加载数据)

绝对起航
 绝对起航
发布于 2017/09/12 11:00
字数 565
阅读 275
收藏 1

      曾经在两个不同的项目中使用过两个不同的树插件,分别是ztree和jstree。个人感觉,在基础的使用中(没使用过复杂的操作),jstree是比较方便的(如果想一个页面有多棵树插件,请不要跳ztree的坑)。

       首先,先使用jstree新建一颗树:

<div class="tree">
	<div id="jstree"></div>
</div>
<script>
    $('#jstree').jstree({
	'core' : {
	    'themes' : {
		'name' : 'proton',
		'responsive' : true
	    },//必须加
	    'check_callback' : true,//开启异步刷新必须加
	    'data' : function(node, callback) {//异步请求后台数据
		$.post('${ctx}/dim/getdimcatlogchildren', {//以id请求参数,根节点id默认为“#”号,后台注意区分
		    "id" : node.id
		}, function(data) {
		    for (var i = 0; i < data.length; i++) {
			if (node.id == "#") {//默认选中根节点
			    var state = new Object();
			    state.selected = true;
			    data[i].state = state;
			    $(".remarks-box").html(data[i].name);
			}
            /* 	data[i].type = 'catalog';//设置节点类型
				obj.type = "catalog";
				obj.sign = data[i].id;
				data[i].a_attr = obj; */
			data[i].text = data[i].name;
			data[i].children = true;
		    }
		    callback.call(node, data)
		}, 'json');
	    }
	},
	"plugins" : [ "dnd", "types", "sort" ],//开启插件:拖拽,类型识别,默认排序
	"types" : {
	    "#" : {
		"max_children" : 1,//根节点只能有一个
		"valid_children" : [ "catalog" ]//节点类型只允许是catalog
	    }/* ,
			      "catalog" : {
			        "valid_children" : ["catalog","indicator"]//节点类型只能是catalog和indicator
			      },
			      "indicator" : {
				    "icon" : "glyphicon glyphicon-filter",//设置图标
			        "valid_children" : []//不允许有子节点
			      },
			      "resource" : {
			        "icon" : "glyphicon glyphicon-pushpin",
			        "valid_children" : []
			      } */
	}
    }).on('changed.jstree', function(e, data) {
    //用户点击其它节点事件
    //data.selected 选中的节点id
    //data.instance.get_node(data.selected[0]).text  选中的节点名字
    }).on('move_node.jstree', function(e, data) {
    //拖拽节点事件
    //data.node.id 子节点  data.parent 新的父节点
    });

       补充一点,要整棵树进行刷新时,保持刷新后默认选中根节点,需添加:

.on('refresh.jstree', function(e, data) {
	var ref = data.instance;
	var sel = JSON.parse("[\"" + nowname + "\"]");
	ref.select_node(sel)
 });

       新增,修改子节点:

var ref = $('#jstree').jstree(true);//选中被修改树
var s = JSON.parse("[\"" + id + "\"]");//生成新增节点id
var node = ref.get_node(s[0]);//获取id为s的节点
if (node.original != undefined) {//判断该节点是否存在
//如果存在所做事情,比如修改节点名字
ref.rename_node(s, obj.dim.disname);
return;
}
sel = ref.get_selected();//获取当前选中节点
if (ref.is_open(sel) || ref.is_leaf(sel)){//当前节点已经展开,若没展开,直接展开就可获取节点信息
var anode = obj.dim;
anode.id = obj.dim.id;
anode.text = obj.dim.name;
ref.create_node(sel, anode);//创建节点
}

       删除子节点:

var ref = $('#jstree').jstree(true);
sel = ref.get_selected();
ref.delete_node(sel[0]);

 

© 著作权归作者所有

共有 人打赏支持
绝对起航
粉丝 0
博文 10
码字总数 6155
作品 0
广州
私信 提问
easyUI combotree控件默认复选框选中的问题

工作中使用easyUI的comboTree控件做个树的筛选功能,现在已实现的是异步加载,点击每个节点异步加载下一级,树已经形成,复选框也好使。 目前遇到的问题是,我在修改时候进入显示这棵树的时候...

蜡笔小新_
2016/03/28
969
0
jstree实现数据同步

目的:实现加载jstree的数据后再点击jstree加载的数据,因为jstree是异步的,将点击方法放到页面初始化里面 $(function(){} 显然是不行的,因为可能数据还没有加载完成,点击的话就没有那条数...

gaofeng36599
2017/04/20
0
0
JQuery Tree插件——zTree v3.0 正式版 发布

在大家的帮助 和 关注下,今天 zTree v3.0 正式版 可以发布了。 v3.0 正式版在功能、性能方便比 v2.x 版本都有了很多改善,尤其是性能方面。用过 v3.0 beta 版本的朋友应该已经体验到了。 但...

zTree
2012/01/10
3.7K
26
对世界上最强大的一棵 treeview 提出意见

说一下,目前我发现最强大的一棵树形菜单还算 zTee 主页地址为:http://www.baby666.cn/v3/main.php#zTreeInfo 我研究 treeview(b/s结构) 的时间加起来,应该有一个月以上了。在传统的web...

长平狐
2013/03/28
154
0
高性能PHP论坛--Carbon Forum

Carbon Forum,一个高性能的、高安全性的、基于话题的PHP轻论坛。 优秀的架构,高效的代码,每个页面平均执行时间仅为1~5毫秒,同时恰当地使用异步加载技术,在SEO与用户体验间取得平衡。 论...

lincanbin
2014/11/10
241.6K
2

没有更多内容

加载失败,请刷新页面

加载更多

Nginx/Apache/PHP Hidden Version Number

nginx隐藏版本号的方法 在nginx配置文件nginx.conf中,加入以下代码: server_tokens off; apache隐藏版本号的方法 在apache配置文件httpd.conf中,加入以下代码: ServerTokens ProdServer...

Linux就该这么学
2分钟前
1
0
iOS 滚动视图 UIScrollView 代理方法 相关属性 状态栏 滚动条 回弹 弹簧效果

iOS 滚动视图 UIScrollView 代理方法 相关属性 状态栏 滚动条 回弹 弹簧效果 #import "ViewController.h"@interface ViewController () <span style="color:#ff0000;"><UIScrollViewDel......

壹峰
8分钟前
0
0
【转】Hive 工作原理详解

什么是Hive? Hive是建立在 Hadoop 上的数据仓库基础构架。它提供了一系列的工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储、查询和分析存储在 Hadoop 中的大规模数据的机制。...

hnairdb
8分钟前
1
0
开源 java CMS - FreeCMS2.8 微信管理 公众号设置

项目地址:http://www.freeteam.cn/ 公众号设置 管理员可以在这里设置微信公众号的相关配置,每个站点都可设置自己的微信公众号。 其中接口URL需要配置在微信公众号中,如下图所示 App Key ...

freeteam
10分钟前
1
0
MySQL中 replace 函数应用

将以下字段中的【忻州】替换为【洛阳】 Sql语句如下 UPDATE sys_organization SET org_name = REPLACE(org_name,'忻州','洛阳'); 执行结果如下...

karma123
13分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部