easyui 进阶之tree的常见操作
前言
easyui是一种基于jQuery的用户界面插件集合,它为创建现代化,互动,JavaScript应用程序,提供必要的功能,完美支持HTML5网页的完整框架,节省网页开发的时间和规模。非常的简单易学。
easyui中文网:http://www.jeasyui.net/
easyui官网:http://www.jeasyui.com/documentation/#
今天我们来学习tree
正文
一、 加载树
1.静态界面加载树
在html直接加载数据,直接写死的页面
<div class="easyui-panel" style="padding:5px">
<ul class="easyui-tree">
<li>
<span>My Documents</span>
<ul>
<li data-options="state:'closed'">
<span>Photos</span>
<ul>
<li>
<span>Friend</span>
</li>
<li>
<span>Wife</span>
</li>
<li>
<span>Company</span>
</li>
</ul>
</li>
<li>
<span>Program Files</span>
<ul>
<li>Intel</li>
<li>Java</li>
<li>Microsoft Office</li>
<li>Games</li>
</ul>
</li>
<li>index.html</li>
<li>about.html</li>
<li>welcome.html</li>
</ul>
</li>
</ul>
</div>
效果图:

2.加载可编辑的树
<div class="easyui-panel" style="padding:5px">
<ul id="tt" class="easyui-tree" data-options="
url: 'tree_data1.json',
method: 'get',
animate: true,
onClick: function(node){
$(this).tree('beginEdit',node.target);
}
"></ul>
</div>
可使用 javascript 加载数据。
$('#tt').tree({
data:[{
"id":,
"text":"Folder1",
"iconCls":"icon-save",
"children":[{
"text":"File1",
"checked":true
},{
"text":"Books",
"state":"open",
"attributes":{
"url":"/demo/book/abc",
"price":
},
"children":[{
"text":"PhotoShop",
"checked":true
},{
"id": ,
"text":"Sub Bookds",
"state":"closed"
}]
}]
},{
"text":"Languages",
"state":"closed",
"children":[{
"text":"Java"
},{
"text":"C#"
}]
}]
});
3.加载在节点上显示额外信息的树
<div class="easyui-panel" style="padding:5px">
<ul class="easyui-tree" data-options="
url:'tree_data1.json',
method:'get',
animate:true,
formatter:function(node){
var s = node.text;
if (node.children){
s += ' <span style=\'color:blue\'>(' + node.children.length + ')</span>';
}
return s;
}
">
</ul>
</div>
如图

4.用js加载树
引用
<ul id="tree"></ul>
js代码
$('#tree').tree({
data:[{
text: 'Item1',
state: 'closed',
children: [{
text: 'Item11'
},{
text: 'Item12'
}],
onSelect: function(node){
console.log('选中的树的节点信息');
console.log(node);
} });
5.加载异步树
创建树形菜单(Tree)
<ul id="tt" class="easyui-tree"
url="tree2_getdata.php">
</ul>
服务器端代码
$id = isset($_POST['id']) ? intval($_POST['id']) : 0;
include 'conn.php';
$result = array();
$rs = mysql_query("select * from nodes where parentId=$id");
while($row = mysql_fetch_array($rs)){
$node = array();
$node['id'] = $row['id'];
$node['text'] = $row['name'];
$node['state'] = has_child($row['id']) ? 'closed' : 'open';
array_push($result,$node);
}
echo json_encode($result);
function has_child($id){
$rs = mysql_query("select count(*) from nodes where parentId=$id");
$row = mysql_fetch_array($rs);
return $row[0] > 0 ? true : false;
}
二,树的属性、方法
官网api
http://www.jeasyui.com/documentation/#
三、常见树操作
1.重新加载树
$("#tree").tree({data:you_data});
$("#tree").tree("loadData",you_data);
2.定义显示节点文本
$('#tt').tree({
formatter:function(node){
return node.text;
}
});
3.点击事件触发
$('#tt').tree({
onClick: function(node){
alert(node.text); // alert node text property when clicked
}
});
4.为树添加右键菜单
// 为菜单树增加右键菜单
$('#tree').tree({
onContextMenu: function(e, node){
e.preventDefault();
// select the node
$('#tree').tree('select', node.target);
// display context menu
$('#mm').menu('show', {
left: e.pageX,
top: e.pageY
});
}
});
树节点
<ul id="tree"></ul>
右键菜单内容
<div id="mm" class="easyui-menu" style="width:120px;">
<div onclick="add_save.add();" data-options="iconCls:'icon-add'">新增子菜单</div>
<div onclick="menuEdit();" data-options="iconCls:'icon-edit'">编辑菜单</div>
<div onclick="add_save.remove();" data-options="iconCls:'icon-remove'">删除</div>
</div>
5.获取选中的节点
var menu = $('#Tree').tree('getSelected');
var nodes = $('#tree').tree('getChecked');
状态可用值有:'checked'、'unchecked'、'indeterminate'。如果状态未分配,则返回 'checked' 节点。
6.追加子节点
数据最好动态加载
var selected = $('#tree').tree('getSelected');
$('#tt').tree('append', {
parent: selected.target,
data: [{
id: 23,
text: 'node23'
},{
text: 'node24',
state: 'closed',
children: [{
text: 'node241'
},{
text: 'node242'
}]
}]
});
7.在指点节点前或后添加一个节
before:DOM 对象,前边插入的节点。
after:DOM 对象,后边插入的节点。
data:对象,节点数据。
//在节点之前添加一个节点
var node = $('#tree').tree('getSelected');
if (node){
$('#tt').tree('insert', {
before: node.target,
data: {
id: 21,
text: 'node text'
}
});
}
8.更新指定节点的参数
// update the selected node text
var node = $('#tree').tree('getSelected');
if (node){
$('#tt').tree('update', {
target: node.target,
text: 'new text'
});
}
9.启动拖拽

示例:
//onBeforeDrop:在节点被放置之前触发,返回 false 则禁止放置。
onBeforeDrop:function(target,source){
var targetNode = $(this).tree('getNode',target);
console.log("目标节点ID:"+targetNode.id);
},
//启动拖拽属性
$("#MenuTree").tree({
dnd:true});
10.树的迭代
在开发过程中,很多时候后台的数据不是我们树加载想要的数据,我们可以通过迭代来编辑数据,
示例:
原数据(后面统一用you_data表示)
[{
"id": 1,
"state": "closed",
"children": [{
"id": 11,
},{
"id": 12,
}]
},{
"id": 2,
"state": "closed"
}]
我们可以发现数据中没有taxt属性,也就没有要显示的文本。。tree是看不到的,我们通过迭代操作加载出数据
//树
$('#Tree').tree({
data: you_data,
onSelect: function(node){
console.log('选中的树的节点信息');
console.log(node);
}
});
//迭代循环
var oldData = [];
if(res){
oldData=you_data;
for(var i in oldData){
//迭代方法调用
readTree(oldData[i],oldData);
}
}
//为菜单树添加text
function readTree(node,data){
var children = node.children;
if(node.name){
node.text=node.id;
}
if(children&&children.length==0)delete node.children;
if (children && children.length) {
node.state = "closed";
for (var i = 0; i < children.length; i++) {
readTree(children[i],data);
}
}else{
return data;
}
};
$("#MenuTree").tree({data:res.data});
操作完以后我们的数据为
[{
"id": 1,
"text": "1",
"state": "closed",
"children": [{
"id": 11,
"text": "11"
},{
"id": 12,
"text": "12"
}]
},{
"id": 2,
"text": "2",
"state": "closed"
}]
相关文章
easyui 进阶之表单校验、自定义校验

欢迎大家关注公众号,不定时干货,只做有价值的输出
作者:Dawnzhang
出处:https://www.cnblogs.com/clwydjgs/p/10043216.html
easyui 进阶之tree的常见操作的更多相关文章
- Jquery easyui tree 一些常见操作
Tree: easyui tree的异步加载实现很简单,easyui的中文API文档中有实例(http://api.btboys.com/easyui/)——创建异步树形菜单,就是在tree node ...
- Linux常见操作
前面的话 本文将详细介绍Linux常见操作 基本概念 Linux严格区分大小写,所有内容以文件形式保存,包括硬件 Linux没有扩展名的概念,不靠扩展名来区分文件类型.但有一些约定俗成的扩展名 压缩包 ...
- 给Jquery easyui 的datagrid 每行增加操作链接(转)
http://www.thinkphp.cn/code/207.html 通过formatter方法给Jquery easyui 的datagrid 每行增加操作链接我们都知道Jquery的EasyU ...
- Python进阶----索引原理,mysql常见的索引,索引的使用,索引的优化,不能命中索引的情况,explain执行计划,慢查询和慢日志, 多表联查优化
Python进阶----索引原理,mysql常见的索引,索引的使用,索引的优化,不能命中索引的情况,explain执行计划,慢查询和慢日志, 多表联查优化 一丶索引原理 什么是索引: 索引 ...
- 动态单链表的传统存储方式和10种常见操作-C语言实现
顺序线性表的优点:方便存取(随机的),特点是物理位置和逻辑为主都是连续的(相邻).但是也有不足,比如:前面的插入和删除算法,需要移动大量元素,浪费时间,那么链式线性表 (简称链表) 就能解决这个问题. ...
- C#路径/文件/目录/I/O常见操作汇总
文件操作是程序中非常基础和重要的内容,而路径.文件.目录以及I/O都是在进行文件操作时的常见主题,这里想把这些常见的问题作个总结,对于每个问题,尽量提供一些解决方案,即使没有你想要的答案,也希望能提供 ...
- X-Cart 学习笔记(四)常见操作
目录 X-Cart 学习笔记(一)了解和安装X-Cart X-Cart 学习笔记(二)X-Cart框架1 X-Cart 学习笔记(三)X-Cart框架2 X-Cart 学习笔记(四)常见操作 五.常见 ...
- 转:jQuery 常见操作实现方式
http://www.cnblogs.com/guomingfeng/articles/2038707.html 一个优秀的 JavaScript 框架,一篇 jQuery 常用方法及函数的文章留存备 ...
- jQuery 常见操作实现方式
一个优秀的 JavaScript 框架,一篇 jQuery 常用方法及函数的文章留存备忘. jQuery 常见操作实现方式 $("标签名") //取html元素 document. ...
随机推荐
- 基于Senparc.CO2NET 缓存策略扩展的缓存使用方法
没啥说的,直接上代码 1.缓存 CacheFactory 实现: //---------------------------------------------------------------- ...
- bzoj1791[IOI2008]Island岛屿(基环树+DP)
题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1791 题目大意:给你一棵n条边的基环树森林,要你求出所有基环树/树的直径之和.n< ...
- fcntl F_SETFL
F_SETFL file set flag F_SETFL命令允许更改的标志有O_APPEND,O_NONBLOCK,O_NOATIME,O_DIRECT,O_ASYNC 这个操作修改文件状态标记适用 ...
- Day7--Python--基础数据类型补充,集合,深浅拷贝
一.基础数据类型补充 1.join() 把列表中的每一项(必须是字符串)用字符串拼接 与split()相反 lst = ["汪峰", "吴君如", " ...
- Android Eclipse 安装教程 hosts替换
http://www.cnblogs.com/Potato-lover/p/5582542.html 第一步,也是最为关键的一步——修改hosts文件 为什么说是最关键的一步呢?因为接下来的操作,我们 ...
- windows server 2012 流媒体服务器搭建(直播与点播)
IIS Live Smooth Streaming(实时平滑流式处理)是微软下一代流媒体解决方案.该技术是在IIS web中集成媒体传输平台IIS media services,实现利用标准 HTTP ...
- Vue(基础六)_vue-router
一.前言 本文主要涉及: 1.传统方式路由的实现 2.使用vue-router ...
- BZOJ3531 树剖 + 动态开点线段树
https://www.lydsy.com/JudgeOnline/problem.php?id=3531 首先这题意要求树链上的最大值以及求和,其树链剖分的做法已经昭然若揭 问题在于这次的信息有宗教 ...
- maven_环境变量配置
- Hadoop ha CDH5.15.1-hadoop集群启动后,集群容量不正确,莫慌,这是正常的表现!
Hadoop ha CDH5.15.1-hadoop集群启动后,集群容量不正确,莫慌,这是正常的表现! 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.集群启动顺序 1>. ...