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. ...
随机推荐
- CF1153F Serval and Bonus Problem
Serval and Bonus Problem 1.转化为l=1,最后乘上l 2.对于一个方案,就是随便选择一个点,选在合法区间内的概率 3.对于本质相同的所有方案考虑在一起,贡献就是合法区间个数/ ...
- Echarts CPU监控 (折线仪表盘,图例混搭)
https://blog.csdn.net/mengxiangfeiyang/article/details/44802939 CPU page <script type="tex ...
- poj 3273"Monthly Expense"(二分搜索+最小化最大值)
传送门 https://www.cnblogs.com/violet-acmer/p/9793209.html 题意: 有 N 天,第 i 天会有 a[ i ] 的花费: 将这 N 天分成 M 份,每 ...
- Luogu P4551 最长异或路径
题目链接 \(Click\) \(Here\) \(01Trie\)好题裸题. 取节点\(1\)为根节点,向下扫每一个点从根节点到它路径上的异或和,我们可以得到一个\(sumx[u]\). 现在路径异 ...
- rownum查询前N条记录
在Oracle中,要按特定条件查询前N条记录,用个rownum就搞定了.——select * from emp where rownum <= 5 而且书上也告诫,不能对rownum用" ...
- 信用评分卡 (part 4 of 7)
python信用评分卡(附代码,博主录制) https://study.163.com/course/introduction.htm?courseId=1005214003&utm_camp ...
- Shell命令的执行顺序
shell执行命令的步骤顺序如上图,看起来有些复杂. 当命令行被处理时,每一个步骤都是在Shell的内存里发生的;Shell不会真的把每个步骤的发生显示给你看. 所以,你可以假想这事我们偷窥Shell ...
- Linux shell 自动删除n天前日志
linux是一个很能自动产生文件的系统,日志.邮件.备份等.虽然现在硬盘廉价,我们可以有很多硬盘空间供这些文件浪费,让系统定时清理一些不需要的文件很有一种爽快的事情.不用你去每天惦记着是否需要清理日志 ...
- CentOS7 上以 RPM 包方式安装 Oracle 18c 单实例
安装阿里云 YUM 源 https://opsx.alibaba.com/mirror?lang=zh-CN 一.安装Oracle数据库 1.安装 Oracle 预安装 RPM yum -y loca ...
- HTTP Method小结
GET 从指定的url上获取内容 POST 提交body中的内容给服务器中指定的url中,属于非幂等的(non-idempotent)请求 HEAD 从指定的url上获取header内容(类似Get方 ...