Jquery easyui tree的使用
这个ui用的一切都是json数据。树也是如此!
后台需要返回与格式匹配的json数据才能正确加载树。
页面定义一个ui:
- <ul id="messageInfoAddTree" class="easyui-tree" checkbox="true" data-options="lines:true" style="height:94%"></ul>
JS访问后台:
- //人员树
- $('#messageInfoAddTree').tree({
- url: "controller/crmMessageInfo/selectEditTree.json?rid=-1",
- loadFilter: function(data){
- return data;
- }
- });
后台实体Bean中需要的属性:
- public class EmployeeTree {
- private Integer id; //人员编号
- private String text; //人员名称
- private Boolean checked = false; //是否选中
- private List<EmployeeTree> children; //子节点
- }
按照此种格式填充数据就能得到下面的结果:
获取已勾选的节点数据:
- var nodes = $('#messageInfoAddTree').tree('getChecked');
还有一个功能,就是让tree的所有节点都勾选上或者取消勾选,在api中找了一下有一个方法:
| check | target | 选中指定节点。 |
那我们只能是选中根节点后,实现全选。
| getRoot | none | 获取根节点,返回节点对象。 |
全选:
- var root = $('#messageInfoAddTree').tree('getRoot');
- $("#messageInfoAddTree").tree('check',root.target);
取消选择:
- var root = $('#messageInfoAddTree').tree('getRoot');
- $("#messageInfoAddTree").tree('uncheck',root.target);
Jquery easyui tree Api:
Tree(树)
使用$.fn.tree.defaults重写默认值对象。
树控件在web页面中一个将分层数据以树形结构进行显示。它提供用户展开、折叠、拖拽、编辑和异步加载等功能。

依赖关系
使用案例
树控件使用<ul>元素定义。标签能够定义分支和子节点。节点都定义在<ul>列表内的<li>元素中。以下显示的元素将被用作树节点嵌套在<ul>元素中。
- <ul id="tt" class="easyui-tree">
- <li>
- <span>Folder</span>
- <ul>
- <li>
- <span>Sub Folder 1</span>
- <ul>
- <li>
- <span><a href="#">File 11</a></span>
- </li>
- <li>
- <span>File 12</span>
- </li>
- <li>
- <span>File 13</span>
- </li>
- </ul>
- </li>
- <li>
- <span>File 2</span>
- </li>
- <li>
- <span>File 3</span>
- </li>
- </ul>
- </li>
- <li>
- <span>File21</span>
- </li>
- </ul>
树控件也可以定义在一个空<ul>元素中并使用Javascript加载数据。
- <ul id="tt"></ul>
- $('#tt').tree({
- url:'tree_data.json'
- });
使用loadFilter函数处理来自Web Services的JSON数据。
- $('#tt').tree({
- url: ...,
- loadFilter: function(data){
- if (data.d){
- return data.d;
- } else {
- return data;
- }
- }
- });
树控件数据格式化
每个节点都具备以下属性:
- id:节点ID,对加载远程数据很重要。
- text:显示节点文本。
- state:节点状态,'open' 或 'closed',默认:'open'。如果为'closed'的时候,将不自动展开该节点。
- checked:表示该节点是否被选中。
- attributes: 被添加到节点的自定义属性。
- children: 一个节点数组声明了若干节点。
一些案例:
- [{
- "id":1,
- "text":"Folder1",
- "iconCls":"icon-save",
- "children":[{
- "text":"File1",
- "checked":true
- },{
- "text":"Books",
- "state":"open",
- "attributes":{
- "url":"/demo/book/abc",
- "price":100
- },
- "children":[{
- "text":"PhotoShop",
- "checked":true
- },{
- "id": 8,
- "text":"Sub Bookds",
- "state":"closed"
- }]
- }]
- },{
- "text":"Languages",
- "state":"closed",
- "children":[{
- "text":"Java"
- },{
- "text":"C#"
- }]
- }]
异步树控件
树控件内建异步加载模式的支持,用户先创建一个空的树,然后指定一个服务器端,执行检索后动态返回JSON数据来填充树并完成异步请求。例子如下:
- <ul class="easyui-tree" data-options="url:'get_data.php'"></ul>
树控件读取URL。子节点的加载依赖于父节点的状态。当展开一个封闭的节点,如果节点没有加载子节点,它将会把节点id的值作为http请求参数并命名为'id',通过URL发送到服务器上面检索子节点。
下面是从服务器端返回的数据。
- [{
- "id": 1,
- "text": "Node 1",
- "state": "closed",
- "children": [{
- "id": 11,
- "text": "Node 11"
- },{
- "id": 12,
- "text": "Node 12"
- }]
- },{
- "id": 2,
- "text": "Node 2",
- "state": "closed"
- }]
节点1和节点2是封闭的,当展开节点1的时候将直接显示它的子节点。当展开节点2的时候它将发送值(2)到服务器获取子节点。
属性
| 属性名 | 属性值类型 | 描述 | 默认值 |
|---|---|---|---|
| url | string | 检索远程数据的URL地址。 | null |
| method | string | 检索数据的HTTP方法。(POST / GET) | post |
| animate | boolean | 定义节点在展开或折叠的时候是否显示动画效果。 | false |
| checkbox | boolean | 定义是否在每一个借点之前都显示复选框。 | false |
| cascadeCheck | boolean | 定义是否层叠选中状态。 | true |
| onlyLeafCheck | boolean | 定义是否只在末级节点之前显示复选框。 | false |
| lines | boolean | 定义是否显示树控件上的虚线。 | false |
| dnd | boolean | 定义是否启用拖拽功能。 | false |
| data | array | 节点数据加载。
$('#tt').tree({
|
null |
| formatter | function(node) | 定义如何渲染节点的文本。
代码示例: $('#tt').tree({
|
false |
| loader | function(param,success,error) | 定义如何从远程服务器加载数据。返回false可以忽略本操作。该函数具备以下参数: param:发送到远程服务器的参数对象。 success(data):当检索数据成功的时候调用的回调函数。 error():当检索数据失败的时候调用的回调函数。 |
json loader |
| loadFilter | function(data,parent) | 返回过滤过的数据进行展示。返回数据是标准树格式。该函数具备以下参数: data:加载的原始数据。 parent: DOM对象,代表父节点。 |
事件
很多事件的回调函数都包含'node'参数,其具备如下属性:
- id:绑定节点的标识值。
- text:显示的节点文本。
- iconCls:显示的节点图标CSS类ID。
- checked:该节点是否被选中。
- state:节点状态,'open' 或 'closed'。
- attributes:绑定该节点的自定义属性。
- target:目标DOM对象。
| 事件名 | 事件参数 | 描述 | |
|---|---|---|---|
| onClick | node |
在用户点击一个节点的时候触发。 代码示例: $('#tt').tree({
|
|
| onDblClick | node | 在用户双击一个节点的时候触发。 | |
| onBeforeLoad | node, param | 在请求加载远程数据之前触发,返回false可以取消加载操作。 | |
| onLoadSuccess | node, data | 在数据加载成功以后触发。 | |
| onLoadError | arguments | 在数据加载失败的时候触发,arguments参数和jQuery的$.ajax()函数里面的'error'回调函数的参数相同。 | |
| onBeforeExpand | node | 在节点展开之前触发,返回false可以取消展开操作。 | |
| onExpand | node | 在节点展开的时候触发。 | |
| onBeforeCollapse | node | 在节点折叠之前触发,返回false可以取消折叠操作。 | |
| onCollapse | node | 在节点折叠的时候触发。 | |
| onBeforeCheck | node, checked | 在用户点击勾选复选框之前触发,返回false可以取消选择动作。(该事件自1.3.1版开始可用) | |
| onCheck | node, checked | 在用户点击勾选复选框的时候触发。 | |
| onBeforeSelect | node | 在用户选择一个节点之前触发,返回false可以取消选择动作。 | |
| onSelect | node | 在用户选择节点的时候触发。 | |
| onContextMenu | e, node |
在右键点击节点的时候触发。 代码示例: // 右键点击节点并显示快捷菜单 |
|
| onBeforeDrag | node | 在开始拖动节点之前触发,返回false可以拒绝拖动。(该事件自1.3.2版开始可用) | |
| onStartDrag | node | 在开始拖动节点的时候触发。(该事件自1.3.2版开始可用) | |
| onStopDrag | node | 在停止拖动节点的时候触发。(该事件自1.3.2版开始可用) | |
| onDragEnter | target, source | 在拖动一个节点进入到某个目标节点并释放的时候触发,返回false可以拒绝拖动。 target:释放的目标节点元素。 source:开始拖动的源节点。 (该事件自1.3.2版开始可用) |
|
| onDragOver | target, source | 在拖动一个节点经过某个目标节点并释放的时候触发,返回false可以拒绝拖动。 target:释放的目标节点元素。 source:开始拖动的源节点。 (该事件自1.3.2版开始可用) |
|
| onDragLeave | target, source | 在拖动一个节点离开某个目标节点并释放的时候触发,返回false可以拒绝拖动。 target:释放的目标节点元素。 source:开始拖动的源节点。 (该事件自1.3.2版开始可用) |
|
| onBeforeDrop | target, source, point | 在拖动一个节点之前触发,返回false可以拒绝拖动。 target:释放的目标节点元素。 source:开始拖动的源节点。 point:表示哪一种拖动操作,可用值有:'append','top' 或 'bottom'。 (该事件自1.3.3版开始可用) |
|
| onDrop | target, source, point | 当节点位置被拖动时触发。 target:DOM对象,需要被拖动动的目标节点。 source:源节点。 point:表示哪一种拖动操作,可用值有:'append','top' 或 'bottom'。 |
|
| onBeforeEdit | node | 在编辑节点之前触发。 | |
| onAfterEdit | node | 在编辑节点之后触发。 | |
| onCancelEdit | node | 在取消编辑操作的时候触发。 |
方法
| 方法名 | 方法参数 | 描述 |
|---|---|---|
| options | none | 返回树控件属性。 |
| loadData | data | 读取树控件数据。 |
| getNode | target | 获取指定节点对象。 |
| getData | target | 获取指定节点数据,包含它的子节点。 |
| reload | target | 重新载入树控件数据。 |
| getRoot | none | 获取根节点,返回节点对象。 |
| getRoots | none | 获取所有根节点,返回节点数组。 |
| getParent | target | 获取父节点,'target'参数代表节点的DOM对象。 |
| getChildren | target | 获取所有子节点,'target'参数代表节点的DOM对象。 |
| getChecked | state | 获取所有选中的节点。'state'可用值有:'checked','unchecked','indeterminate'。如果'state'未指定,将返回'checked'节点。
代码示例: var nodes = $('#tt').tree('getChecked'); // get checked nodes
译者注:(1.3.4新增获取方式)
var nodes = $('#tt').tree('getChecked', ['unchecked','indeterminate']);
|
| getSelected | none | 获取选择节点并返回它,如果未选择则返回null。 |
| isLeaf | target | 判断指定的节点是否是叶子节点,target参数是一个节点DOM对象。 |
| find | id |
查找指定节点并返回节点对象。 代码示例: // 查找一个节点并选择它 |
| select | target | 选择一个节点,'target'参数表示节点的DOM对象。 |
| check | target | 选中指定节点。 |
| uncheck | target | 取消选中指定节点。 |
| collapse | target | 折叠一个节点,'target'参数表示节点的DOM对象。 |
| expand | target | 展开一个节点,'target'参数表示节点的DOM对象。在节点关闭或没有子节点的时候,节点ID的值(名为'id'的参数)将会发送给服务器 请求子节点的数据。 |
| collapseAll | target | 折叠所有节点。 |
| expandAll | target | 展开所有节点。 |
| expandTo | target | 打开从根节点到指定节点之间的所有节点。 |
| scrollTo | target | 滚动到指定节点。(该方法自1.3.4版开始可用) |
| append | param |
追加若干子节点到一个父节点,param参数有2个属性: 代码示例: // 追加若干个节点并选中他们 |
| toggle | target | 打开或关闭节点的触发器,target参数是一个节点DOM对象。 |
| insert | param | 在一个指定节点之前或之后插入节点,'param'参数包含如下属性: before:DOM对象,在某个节点之前插入。 after:DOM对象,在某个节点之后插入。 data:对象,节点数据。 下面的代码展示了如何将一个新节点插入到选择的节点之前: var node = $('#tt').tree('getSelected');
译者注:(1.3.4新增获取方式) |
| remove | target | 移除一个节点和它的子节点,'target'参数是该节点的DOM对象。 |
| pop | target | 移除一个节点和它的子节点,该方法跟remove方法一样,不同的是它将返回被移除的节点数据。 |
| update | param | 更新指定节点。'param'参数包含以下属性: target(DOM对象,将被更新的目标节点),id,text,iconCls,checked等。 代码示例: // 更新选择的节点文本 |
| enableDnd | none | 启用拖拽功能。 |
| disableDnd | none | 禁用拖拽功能。 |
| beginEdit | target | 开始编辑一个节点。 |
| endEdit | target | 结束编辑一个节点。 |
| cancelEdit | target | 取消编辑一个节点。 |
Jquery easyui tree的使用的更多相关文章
- Jquery easyui Tree的简单使用
Jquery easyui Tree的简单使用 Jquery easyui 是jQuery EasyUI是一组基于jQuery的UI插件集合,而jQuery EasyUI的目标就是帮助web开发者更轻 ...
- jquery easyui tree dialog
<script type="text/javascript" src="<%=request.getContextPath()%>/include/ja ...
- Jquery EasyUI Tree .net实例
图片: 针对tree: 数据库: CREATE TABLE [dbo].[SystemModel]( [Id] [,) NOT NULL, [Name] [nvarchar]() NULL, [Fat ...
- Jquery easyui tree 一些常见操作
Tree: easyui tree的异步加载实现很简单,easyui的中文API文档中有实例(http://api.btboys.com/easyui/)——创建异步树形菜单,就是在tree node ...
- Jquery EasyUI Tree树形结构的Java实现(实体转换VO)
前一阵做的OA项目,有一个是组织架构的树,因为是分开做的,我做的是Controller和页面,其他组做的Service和Dao,因为之前一直没有商量页面用什么框架做比较好,导致,Dao层取出来的数据都 ...
- JQuery EasyUI Tree组件的Bug记录
记录一下使用项目中使用EasyUI遇到的bug,废话少说直接上菜 - _-(bug)..... bug :: .netcore创建一个web应用时候,会自动引入jQuery库以及一些插件,但是在 ...
- JQuery EasyUI Tree
Tree 数据转换 所有节点都包含以下属性: id:节点id,这个很重要到加载远程服务器数据 which is important to load remote data text: 显示的节点文本 ...
- jQuery EasyUI tree中state属性慎用
EasyUI 1.4.4 tree控件中,如果是叶子节点,切忌把state设置为closed,否则该节点会加载整个tree,形成死循环 例如: json入下: [ { "checked&qu ...
- jquery easyui tree异步加载子节点
easyui中的树可以从标记中建立,也可以通过指定一个URL属性读取数据建立.如果想建立一棵异步树,需要为每个节点指定一个id属性值,这样在加载数据时会自动向后台传递id参数. <ul id=& ...
随机推荐
- 蓝牙Ibeacon室内定位和微信摇一摇周边原理分析
苹果推出Ibeacon室内定位技术是为了弥补GPS无法覆盖室内定位这种场景.苹果意味着创新,在其推动下,蓝牙Ibeacon得到了极大的应用.而腾讯则是利用蓝牙Ibeacon在场景体验方面进行了创新,实 ...
- iOS edgesForExtendedLayout、extendedLayoutIncludesOpaqueBars、automaticallyAdjustsScrollViewInsets属性详解
edgesForExtendedLayout: 在IOS7以后 ViewController 开始使用全屏布局的,而且是默认的行为通常涉及到布局,就离不开这个属性 edgesForExtendedLa ...
- 纪录JVM内存模型内容
声明:本内容是博主在牛客网上看到的网友发表的答案,因为感觉总结的比较好,所以摘抄过来供大家学习. 内容: 大多数 JVM 将内存区域划分为 Method Area(Non-Heap)(方法区) ,He ...
- [LoadRunner]性能测试实践_Hessian协议脚本编写
第一步,新建LR的脚本,选择Java Vuser协议: 第二步,编写hessian测试脚本,如下: import lrapi.lr; import java.net.MalformedURLExcep ...
- 利用 cos 组件实现jsp中上传附件
需求:在web功能中附件上传功能为最基本的功能之一,所以用cos组件做了一个附件上传的demo.附件上传功能的实现可以利用其它的java组件实现,相关资料网上比较多. 说明步骤:下载组件并安装 --& ...
- 深入剖析js命名空间函数namespace
在看阿里员工写的开源数据库连接池的druid的源代码时,发现了其中在jquery的原代码中又定义了一个命名空间的函数:$.namespace(),其代码如下: 网址为:https://github.c ...
- hibernate查询方式
hibernate查询方式:1.本地SQL查询 2.HQL查询 3.QBC查询 HQL查询:是面向对象的查询语言,是使用最广的一种查询方法 QBC查询:Query by Criteria是一套接口来实 ...
- 在EntityFramework6中执行SQL语句
在EntityFramework6中执行SQL语句 在上一节中我介绍了如何使用EF6对数据库实现CRDU以及事务,我们没有写一句SQL就完成了所有操作.这一节我来介绍一下如何使用在EF6中执行SQL语 ...
- QEMU启动时插入tap虚拟网卡
1.利用brctl命令创建虚拟网桥br0 brctl addbr br0 ifconfig br0 up //上述两条命令分开执行会导致网络断开 2.将虚拟网桥br0与物理网卡eth0绑定 brctl ...
- 【ASP.NET 进阶】根据IP地址返回对应位置信息
其实就是使用了百度的IP库的功能接口,然后处理下就行了,效果图如下: 准备工作: 1.注册成为开度开发者,创建应用获得百度API调用的AK秘钥,百度开发中心地址:http://developer.ba ...