EasyUI中树的基本操作
生活随笔
收集整理的這篇文章主要介紹了
EasyUI中树的基本操作
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
場景
效果
樹(tree)定義在 <ul> 元素中。該標記可定義葉節點和子節點。節點將是 ul 列表內的 <li> 元素。
屬性
| 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 | 要加載的節點數據。 | null |
| formatter | function(node) | 定義如何呈現節點文本。 代碼實例: | ? |
| 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 | 當用戶點擊一個節點時觸發。代碼實例: |
| 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 | 當節點被拖拽離開允許放置的目標節點時觸發。 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' 節點。 代碼實例: |
| 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 參數有兩個屬性: parent:DOM 對象,要追加到的父節點,如果沒有分配,則追加為根節點。 data:數組,節點的數據。 代碼實例: |
| toggle | target | 切換節點的展開/折疊狀態,target 參數表示節點的 DOM 對象。 |
| insert | param | 在指定節點的前邊或后邊插入一個節點,param 參數包括下列屬性: before:DOM 對象,前邊插入的節點。 after:DOM 對象,后邊插入的節點。 data:對象,節點數據。 下面的代碼演示了如何在選中節點之前插入一個新的節點: |
| 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 | 取消編輯節點。 |
實現
使用基本的ul元素構造樹
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Title</title><link rel="stylesheet" type="text/css" href="/easyui/themes/icon.css"><link rel="stylesheet" type="text/css" href="/easyui/themes/default/easyui.css"><script type="text/javascript" src="/easyui/jquery.min.js"></script><script type="text/javascript" src="/easyui/jquery.easyui.min.js"></script> </head> <body> <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></body> </html>使用js加載json數據構造樹
每個節點可以包括下列屬性:
id:節點的 id,它對于加載遠程數據很重要。
text:要顯示的節點文本。
state:節點狀態,'open' 或 'closed',默認是 'open'。當設置為 'closed' 時,該節點有子節點,并且將從遠程站點加載它們。
checked:指示節點是否被選中。
attributes:給一個節點添加的自定義屬性。
children:定義了一些子節點的節點數組。
示例代碼:
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Title</title><link rel="stylesheet" type="text/css" href="/easyui/themes/icon.css"><link rel="stylesheet" type="text/css" href="/easyui/themes/default/easyui.css"><script type="text/javascript" src="/easyui/jquery.min.js"></script><script type="text/javascript" src="/easyui/jquery.easyui.min.js"></script> </head> <body> <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 id="tree2"></ul> <script type="text/javascript">$(function () {$("#tree2").tree({data:[{"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#"}]}]})}) </script> </body> </html>效果
可編輯的樹
設置點擊事件為可以編輯,設置編輯之后的事件為提示節點內容,獲取到節點內容就可以進行ajax提交數據等其他操作。
? onClick:function (node) {$(this).tree("beginEdit",node.target);},onAfterEdit:function (node) {alert("編輯后的節點內容為:"+node.text)}完整示例代碼:
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Title</title><link rel="stylesheet" type="text/css" href="/easyui/themes/icon.css"><link rel="stylesheet" type="text/css" href="/easyui/themes/default/easyui.css"><script type="text/javascript" src="/easyui/jquery.min.js"></script><script type="text/javascript" src="/easyui/jquery.easyui.min.js"></script> </head> <body> <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 id="tree2"></ul> <script type="text/javascript">$(function () {$("#tree2").tree({data:[{"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#"}]}],onClick:function (node) {$(this).tree("beginEdit",node.target);},onAfterEdit:function (node) {alert("編輯后的節點內容為:"+node.text)}})}) </script> </body> </html>效果
給樹添加追加與刪除菜單
效果
實現
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Title</title><link rel="stylesheet" type="text/css" href="/easyui/themes/icon.css"><link rel="stylesheet" type="text/css" href="/easyui/themes/default/easyui.css"><script type="text/javascript" src="/easyui/jquery.min.js"></script><script type="text/javascript" src="/easyui/jquery.easyui.min.js"></script> </head> <body> <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 id="tree2"></ul> <div id="mm" class="easyui-menu" style="width:120px;"><div onclick="appendNode()" data-options="iconCls:'icon-add'">Append</div><div onclick="insertNode()" data-options="iconCls:'icon-back'">Insert</div><div onclick="removeNode()" data-options="iconCls:'icon-remove'">Remove</div> </div> <script type="text/javascript">$(function () {$("#tree2").tree({data:[{"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#"}]}],onClick:function (node) {$(this).tree("beginEdit",node.target);},onAfterEdit:function (node) {alert("編輯后的節點內容為:"+node.text)},onContextMenu:function (e,node) {//阻止原來的右鍵事件e.preventDefault();$(this).tree("select",node.target);$("#mm").menu("show",{left:e.pageX,top:e.pageY})}})})var id={};function appendNode(){var selected =$("#tree2").tree("getSelected");var node ={parent:selected.target,data:[{id:++id,text:''}]}$("#tree2").tree("append",node);node=$("#tree2").tree("find",id);$("#tree2").tree("beginEdit",node.target);}function insertNode() {var selected =$("#tree2").tree("getSelected");var node={id:++id,text:''}$("#tree2").tree("insert",{after:selected.target,data:node});node=$("#tree2").tree("find",id);$("#tree2").tree("beginEdit",node.target);}function removeNode() {selected =$("#tree2").tree("getSelected");$("#tree2").tree("remove",selected.target);} </script> </body> </html>拖拽樹效果
設置dnd屬性為true,onDrop事件是拖拽之后的事件。
source能獲取拖拽前的節點,target能獲取拖拽后的節點。
?
dnd:true,onDrop:function(target,source,point){alert("原來的節點:"+source.text);alert("新的節點:"+$(this).tree("getNode",target).text)}完整代碼
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Title</title><link rel="stylesheet" type="text/css" href="/easyui/themes/icon.css"><link rel="stylesheet" type="text/css" href="/easyui/themes/default/easyui.css"><script type="text/javascript" src="/easyui/jquery.min.js"></script><script type="text/javascript" src="/easyui/jquery.easyui.min.js"></script> </head> <body> <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 id="tree2"></ul> <div id="mm" class="easyui-menu" style="width:120px;"><div onclick="appendNode()" data-options="iconCls:'icon-add'">Append</div><div onclick="insertNode()" data-options="iconCls:'icon-back'">Insert</div><div onclick="removeNode()" data-options="iconCls:'icon-remove'">Remove</div> </div> <script type="text/javascript">$(function () {$("#tree2").tree({data:[{"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#"}]}],onClick:function (node) {$(this).tree("beginEdit",node.target);},onAfterEdit:function (node) {alert("編輯后的節點內容為:"+node.text)},onContextMenu:function (e,node) {//阻止原來的右鍵事件e.preventDefault();$(this).tree("select",node.target);$("#mm").menu("show",{left:e.pageX,top:e.pageY})},dnd:true,onDrop:function(target,source,point){alert("原來的節點:"+source.text);alert("新的節點:"+$(this).tree("getNode",target).text)}})})var id={};function appendNode(){var selected =$("#tree2").tree("getSelected");var node ={parent:selected.target,data:[{id:++id,text:''}]}$("#tree2").tree("append",node);node=$("#tree2").tree("find",id);$("#tree2").tree("beginEdit",node.target);}function insertNode() {var selected =$("#tree2").tree("getSelected");var node={id:++id,text:''}$("#tree2").tree("insert",{after:selected.target,data:node});node=$("#tree2").tree("find",id);$("#tree2").tree("beginEdit",node.target);}function removeNode() {selected =$("#tree2").tree("getSelected");$("#tree2").tree("remove",selected.target);} </script> </body> </html>?
總結
以上是生活随笔為你收集整理的EasyUI中树的基本操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SpringBoot+AntV实现一次前
- 下一篇: EasyUI中Window窗口的简单使用