`
wx1569110409
  • 浏览: 18745 次
文章分类
社区版块
存档分类
最新评论

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

 
阅读更多

      曾经在两个不同的项目中使用过两个不同的树插件,分别是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]);

 

转载于:https://my.oschina.net/u/2349928/blog/1535718

分享到:
评论

相关推荐

    JSTree(js写的树形菜单,支持加载10000节点以上)

    **JSTree:高效处理大数据量的JavaScript树形菜单组件** 在Web开发中,树形菜单是一种常见的数据展示形式,用于组织和展示层次结构的数据。JSTree是一款基于JavaScript的开源库,专为构建功能丰富的交互式树形菜单...

    jstree.min.js.zip

    - **操作功能**:内置了创建、删除、重命名、复制、移动节点等功能,便于数据管理。 - **搜索与过滤**:提供搜索和过滤功能,用户可以快速定位和筛选所需内容。 2. **应用场景** - **文件管理系统**:在网页上...

    layui tree.js树形组件优化(默认选中项过多时加载缓慢问题解决)

    有需要的直接下载替换掉start\layui\lay\modules目录下的tree.js文件即可

    jsTree 很好用的动态加载数

    动态加载是 jsTree 的核心特性之一,它允许在用户滚动或展开树节点时按需加载数据,而不是一次性加载所有数据。这种机制对于处理大量数据特别有用,因为它减少了初始页面加载时间,提高了用户体验。通过设置适当的...

    jsTree中文文档

    jsTree 有多种事件可以监听,比如 `ready.jstree`(初始化完成)、`select_node.jstree`(节点被选中)和 `rename_node.jstree`(节点重命名)。以下是一个监听节点被选中的例子: ```javascript $('#jstree_demo_...

    layui-tree实现Ajax异步请求后动态添加节点的方法

    1. 获取当前选中的父节点信息,可能需要使用 layui.tree 的 API,如 `tree.checkStatus('demo')` 来获取选中状态。 2. 发送 AJAX 请求到后台,携带父节点的相关信息(例如 ID),请求新建子分类。 3. 在后台处理请求...

    js TreeMenu 异步加载树形控件

    异步加载的基本思想是:当树形控件展开一个父节点时,才发起请求获取该父节点的子节点数据。这样可以避免一次性加载大量数据导致的性能问题。在 jQuery 中,我们可以监听节点的展开事件,然后使用 AJAX 方法请求数据...

    fuelux.tree 自定义属性控件-自定义图标+动态加载数据+添加点击事件

    在本文中,我们将深入探讨如何使用 FuelUX 的 Tree 控件来实现自定义图标、动态加载数据以及添加点击事件,从而创建更加互动且功能丰富的用户界面。 首先,让我们了解 FuelUX Tree 控件的基本概念。Tree 控件是一种...

    jquery.tree.js树形导航菜单插件

    1. **动态加载**:jQuery.tree.js允许根据需要动态加载子节点,减少初次加载时的数据量,提高页面加载速度。 2. **多级展开**:支持任意深度的树形结构,用户可以方便地展开和折叠各级别节点。 3. **交互反馈**:...

    extjs中Ext.Panel和TreePanel 组件动态加载本地页面数据

    在这个例子中,`TreePanel`使用`TreeStore`从`tree_data.json`加载数据,并且隐藏了根节点。 标签“源码”和“工具”暗示了这篇博客可能还讨论了EXTJS的源代码以及如何使用EXTJS作为开发工具来实现动态加载功能。...

    手机端js tree

    在移动设备上,为了有效地展示层次结构数据,如文件系统、组织架构或导航菜单,"手机端js tree"成为了一种实用的解决方案。这个技术基于JavaScript,专为智能手机和平板电脑等移动端设备设计,提供了可自定义的树形...

    JS 动态树 异步加载树 xloadtree WebFXLoadTree

    标题 "JS 动态树 异步加载树 xloadtree WebFXLoadTree" 指的是在JavaScript中实现的一种特定的树形结构组件,它具备动态加载和异步数据获取的功能。这种技术常用于构建大型数据集的层级展示,如文件系统、组织结构或...

    tree.js树形JS实现

    tree.jstree.jstree.jstree.jstree.jstree.jstree.js

    jstree相关资源文件.zip

    它包含了jstree的所有功能,如节点操作(添加、删除、移动)、事件处理、搜索、拖放支持以及多种视图模式。使用时,你需要在HTML文档中通过`&lt;script&gt;`标签引入此文件,并根据需求配置相应的选项来初始化jstree。 2....

    JsTree 实例使用

    2. **节点操作**:JsTree 支持节点的创建、删除、复制和移动。例如,添加节点: ```javascript $('#jstree').jstree('create_node', '#root', { 'text': '新节点' }); ``` 3. **事件监听**:可以绑定各种事件,...

    jsTree v.1.0中文文档

    4. **异步加载(Lazy Loading)**:对于大型数据集,jsTree支持懒加载,即只在需要时才加载子节点,提高了性能。 **主要API与事件** 1. **API方法**:如`jstree('create_node')`用于创建新节点,`jstree('rename_...

    jsTree例子3-ui

    它支持多种操作,包括节点的添加、删除、移动以及展开和折叠。UI插件是jsTree的核心组成部分,负责处理视觉呈现和用户交互。 ### 2. UI插件的作用 UI插件主要关注以下几个方面: - **样式**:提供预设的CSS样式,...

    jsTree.v.0.9.9a.zip

    - `.jstree('remove_node', [node])`:删除一个节点。 - `.jstree('rename_node', [node], [new_name])`:重命名节点。 **示例代码** ```html &lt;!DOCTYPE html&gt; &lt;link rel="stylesheet" href="css/jquery.jstree...

    jsTree.v.1.0rc2

    jsTree 是一个流行的JavaScript库,专门用于创建交互式的树型结构。版本1.0rc2是这个库的一个早期版本,代表“Release Candidate 2”,意味着它是一个即将正式发布的测试版本,可能比之前的版本更加稳定,但仍然可能...

    jsTree集经典

    jsTree提供多种功能,如节点的拖放、搜索、上下文菜单、多选、异步加载等,使得用户可以轻松地操作和浏览复杂的数据。 ### 主要特性: 1. **可扩展性**:jsTree支持多种插件,允许添加自定义功能,如拖放、搜索、...

Global site tag (gtag.js) - Google Analytics