Latest web development tutorials
×

jQuery EasyUI 教程

jQuery EasyUI 教程 jQuery EasyUI 簡介

jEasyUI 應用

jEasyUI 創建 CRUD 應用 jEasyUI 創建 CRUD 數據網格 jEasyUI 表單的 CRUD 應用 jEasyUI 創建 RSS 閱讀器

jEasyUI 拖放

jEasyUI 基本的拖動和放置 jEasyUI 創建拖放的購物車 jEasyUI 創建學校課程表

jEasyUI 菜單與按鈕

jEasyUI 創建簡單的菜單 jEasyUI 創建鏈接按鈕 jEasyUI 創建菜單按鈕 jEasyUI 創建分割按鈕

jEasyUI 佈局

jEasyUI 創建邊框佈局 jEasyUI 創建複雜佈局 jEasyUI 創建折疊面板 jEasyUI 創建標籤頁 jEasyUI 動態添加標籤頁 jEasyUI 添加自動播放標籤頁 jEasyUI 創建 XP 風格左側面板

jEasyUI 數據網格

jEasyUI 轉換 HTML 表格為數據網格 jEasyUI 取得選中行數據 jEasyUI 添加查詢功能 jEasyUI 添加工具欄 jEasyUI 創建複雜工具欄 jEasyUI 設置凍結列 jEasyUI 動態改變列 jEasyUI 格式化列 jEasyUI 設置排序 jEasyUI 自定義排序 jEasyUI 創建列組合 jEasyUI 添加複選框 jEasyUI 自定義分頁 jEasyUI 啟用行內編輯 jEasyUI 擴展編輯器 jEasyUI 列運算 jEasyUI 合併單元格 jEasyUI 創建自定義視圖 jEasyUI 創建頁腳摘要 jEasyUI 條件設置行背景顏色 jEasyUI 創建屬性網格 jEasyUI 擴展行顯示細節 jEasyUI 創建子網格 jEasyUI 顯示海量數據 jEasyUI 添加分頁組件

jEasyUI 窗口

jEasyUI 創建簡單窗口 jEasyUI 自定義窗口工具欄 jEasyUI 窗口與佈局 jEasyUI 創建對話框 jEasyUI 自定義對話框

jEasyUI 樹形菜單

jEasyUI 使用標記創建樹形菜單 jEasyUI 創建異步樹形菜單 jEasyUI 樹形菜單添加節點 jEasyUI 創建帶複選框的樹形菜單 jEasyUI 樹形菜單拖放控制 jEasyUI 樹形菜單加載父/子節點 jEasyUI 創建基礎樹形網格 jEasyUI 創建複雜樹形網格 jEasyUI 樹形網格動態加載 jEasyUI 樹形網格添加分頁 jEasyUI 樹形網格惰性加載節點

jEasyUI 表單

jEasyUI 創建異步提交表單 jEasyUI 表單驗證 jEasyUI 創建樹形下拉框 jEasyUI 格式化下拉框 jEasyUI 過濾下拉數據網格

jEasyUI 參考手冊

jQuery EasyUI 插件 jQuery EasyUI 擴展

jQuery EasyUI 數據網格與樹插件– Tree 樹

jQuery EasyUI 插件 jQuery EasyUI插件

通過$.fn.tree.defaults 重寫默認的defaults。

樹(tree)在網頁中以樹形結構顯示分層數據。 它向用戶提供展開、折疊、拖拽、編輯和異步加載功能。

依賴

  • draggable
  • droppable

用法

樹(tree)定義在<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>

樹(Tree)也可以在一個空的<ul> 元素中定義,可使用javascript 加載數據。

<ul id="tt"></ul>
$('#tt').tree({
    url:'tree_data.json'
});

使用loadFilter 來處理來自ASP.NET web 服務的json 數據。

$('#tt').tree({
    url: ...,
    loadFilter: function(data){
		if (data.d){
			return data.d;
		} else {
			return data;
		}
    }
});

樹的數據格式(Tree Data Format)

每個節點可以包括下列屬性:

  • 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 'get_data.php' 加載的。 子節點依賴於父節點狀態被加載。 當展開一個關閉的節點時,如果該節點沒有子節點加載,它將通過上面定義的URL 向服務器發送節點的id 值作為名為'id' 的http 請求參數,以便檢索子節點。

請看從服務器返回的數據:

[{
    "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 時,將向服務器發送value(2) 以便檢索子節點。

本教程中的創建異步樹演示瞭如何編寫服務器代碼來根據需求返回樹的數據。

屬性

名称 类型 描述 默认值
url string 获取远程数据的 URL 。 null
method string 检索数据的 http 方法(method)。 post
animate boolean 定义当节点展开折叠时是否显示动画效果。 false
checkbox boolean 定义是否在每个节点前边显示复选框。 false
cascadeCheck boolean 定义是否级联检查。 true
onlyLeafCheck boolean 定义是否只在叶节点前显示复选框。 false
lines boolean 定义是否显示树线条。 false
dnd boolean 定义是否启用拖放。 false
data array 要加载的节点数据。
$('#tt').tree({
	data: [{
		text: 'Item1',
		state: 'closed',
		children: [{
			text: 'Item11'
		},{
			text: 'Item12'
		}]
	},{
		text: 'Item2'
	}]
});
null
formatter function(node) 定义如何呈现节点文本。
代码实例:
$('#tt').tree({
	formatter:function(node){
		return node.text;
	}
});
loader function(param,success,error) 定义如何从远程服务器加载数据。返回 false 则取消该动作。该函数有下列参数:
param:要传递到远程服务器的参数对象。
success(data):当检索数据成功时调用的回调函数。
error():当检索数据失败时调用的回调函数。
json loader
loadFilter function(data,parent) 返回要显示的过滤数据。返回数据时以标准树格式返回的。该函数有下列参数:
data:要加载的原始数据。
parent:DOM 对象,表示父节点。

事件

很多事件的回調函數需要'node' 參數,它包括下列屬性:

  • id:綁定到節點的標識值。
  • text:要顯示的文本。
  • iconCls:用來顯示圖標的css class。
  • checked:節點是否被選中。
  • state:節點狀態,'open' 或'closed'。
  • attributes:綁定到節點的自定義屬性。
  • target:目標的DOM 對象。
名称 参数 描述
onClick node 当用户点击一个节点时触发。代码实例:
$('#tt').tree({
	onClick: function(node){
		alert(node.text);  // alert node text property when clicked
	}
});
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 当右键点击节点时触发。代码实例:
// right click node and then display the context menu
$('#tt').tree({
	onContextMenu: function(e, node){
		e.preventDefault();
		// select the node
		$('#tt').tree('select', node.target);
		// display context menu
		$('#mm').menu('show', {
			left: e.pageX,
			top: e.pageY
		});
	}
});

// the context menu is defined as below:
<div id="mm" class="easyui-menu" style="width:120px;">
	<div onclick="append()" data-options="iconCls:'icon-add'">Append</div>
	<div onclick="remove()" data-options="iconCls:'icon-remove'">Remove</div>
</div>
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 当节点被拖拽离开允许放置的目标节点时触发。
target:被放置的目标节点元素。
source:被拖拽的源节点。
该事件自版本 1.3.2 起可用。
onBeforeDrop target,source,point 节点被放置之前触发,返回 false 则禁止放置。
target:DOM 对象,放置的目标节点。
source:源节点。
point:表示放置操作,可能的值是:'append'、'top' 或 'bottom'。
该事件自版本 1.3.2 起可用。
onDrop target,source,point 当节点被放置时触发。 target:DOM 对象,放置的目标节点。
source:源节点。
point:表示放置操作,可能的值是:'append'、'top' 或 'bottom'。
onBeforeEdit node 编辑节点前触发。
onAfterEdit node 编辑节点后触发。
onCancelEdit node 当取消编辑动作时触发。

方法

名称 参数 描述
options none 返回树的选项(options)。
loadData data 加载树的数据。
getNode target 获取指定的节点对象。
getData target 获取指定的节点数据,包括它的子节点。
reload target 重新加载树的数据。
getRoot none 获取根节点,返回节点对象。
getRoots none 获取根节点,返回节点数组。
getParent target 获取父节点,target 参数表示节点的 DOM 对象。
getChildren target 获取子节点, target 参数表示节点的 DOM 对象。
getChecked state 获取选中的节点。状态可用值有:'checked'、'unchecked'、'indeterminate'。如果状态未分配,则返回 'checked' 节点。
代码实例:
var nodes = $('#tt').tree('getChecked');	// get checked nodes
var nodes = $('#tt').tree('getChecked', 'unchecked');	// get unchecked nodes
var nodes = $('#tt').tree('getChecked', 'indeterminate');	// get indeterminate nodes
var nodes = $('#tt').tree('getChecked', ['checked','indeterminate']);	// get checked and indeterminate nodes
getSelected none 获取选中的节点并返回它,如果没有选中节点,则返回 null。
isLeaf target 把指定的节点定义成叶节点,target 参数表示节点的 DOM 对象。
find id 找到指定的节点并返回该节点对象。代码实例:
// find a node and then select it
var node = $('#tt').tree('find', 12);
$('#tt').tree('select', node.target);
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 参数有两个属性:
parent:DOM 对象,要追加到的父节点,如果没有分配,则追加为根节点。
data:数组,节点的数据。

代码实例:
// append some nodes to the selected node
var selected = $('#tt').tree('getSelected');
$('#tt').tree('append', {
	parent: selected.target,
	data: [{
		id: 23,
		text: 'node23'
	},{
		text: 'node24',
		state: 'closed',
		children: [{
			text: 'node241'
		},{
			text: 'node242'
		}]
	}]
});
toggle target 切换节点的展开/折叠状态,target 参数表示节点的 DOM 对象。
insert param 在指定节点的前边或后边插入一个节点,param 参数包括下列属性:
before:DOM 对象,前边插入的节点。
after:DOM 对象,后边插入的节点。
data:对象,节点数据。

下面的代码演示了如何在选中节点之前插入一个新的节点:
var node = $('#tt').tree('getSelected');
if (node){
	$('#tt').tree('insert', {
		before: node.target,
		data: {
			id: 21,
			text: 'node text'
		}
	});
}
remove target 移除一个节点和它的子节点,target 参数表示节点的 DOM 对象。
pop target 弹出一个节点和它的子节点,该方法和 remove 一样,但是返回了移除的节点数据。
update param 更新指定的节点,'param' 参数有下列属性:
target(DOM 对象,要被更新的节点)、id、text、iconCls、checked,等等。

代码实例:
// update the selected node text
var node = $('#tt').tree('getSelected');
if (node){
	$('#tt').tree('update', {
		target: node.target,
		text: 'new text'
	});
}
enableDnd none 启用拖放功能。
disableDnd none 禁用拖放功能。
beginEdit target 开始编辑节点。
endEdit target 结束编辑节点。
cancelEdit target 取消编辑节点。

jQuery EasyUI 插件 jQuery EasyUI插件