日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

EasyUI中树的基本操作

發(fā)布時間:2025/3/19 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 EasyUI中树的基本操作 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

場景

效果

樹(tree)定義在 <ul> 元素中。該標記可定義葉節(jié)點和子節(jié)點。節(jié)點將是 ul 列表內(nèi)的 <li> 元素。

屬性

名稱類型描述默認值
urlstring獲取遠程數(shù)據(jù)的 URL 。null
methodstring檢索數(shù)據(jù)的 http 方法(method)。post
animateboolean定義當節(jié)點展開折疊時是否顯示動畫效果。false
checkboxboolean定義是否在每個節(jié)點前邊顯示復選框。false
cascadeCheckboolean定義是否級聯(lián)檢查。true
onlyLeafCheckboolean定義是否只在葉節(jié)點前顯示復選框。false
linesboolean定義是否顯示樹線條。false
dndboolean定義是否啟用拖放。false
dataarray要加載的節(jié)點數(shù)據(jù)。
  • $('#tt').tree({
  • data: [{
  • text: 'Item1',
  • state: 'closed',
  • children: [{
  • text: 'Item11'
  • },{
  • text: 'Item12'
  • }]
  • },{
  • text: 'Item2'
  • }]
  • });
  • null
    formatterfunction(node)定義如何呈現(xiàn)節(jié)點文本。
    代碼實例:
  • $('#tt').tree({
  • formatter:function(node){
  • return node.text;
  • }
  • });
  • ?
    loaderfunction(param,success,error)定義如何從遠程服務器加載數(shù)據(jù)。返回 false 則取消該動作。該函數(shù)有下列參數(shù):
    param:要傳遞到遠程服務器的參數(shù)對象。
    success(data):當檢索數(shù)據(jù)成功時調(diào)用的回調(diào)函數(shù)。
    error():當檢索數(shù)據(jù)失敗時調(diào)用的回調(diào)函數(shù)。
    json loader
    loadFilterfunction(data,parent)返回要顯示的過濾數(shù)據(jù)。返回數(shù)據(jù)時以標準樹格式返回的。該函數(shù)有下列參數(shù):
    data:要加載的原始數(shù)據(jù)。
    parent:DOM 對象,表示父節(jié)點。
    ?

    事件

    很多事件的回調(diào)函數(shù)需要 'node' 參數(shù),它包括下列屬性:

    • id:綁定到節(jié)點的標識值。
    • text:要顯示的文本。
    • iconCls:用來顯示圖標的 css class。
    • checked:節(jié)點是否被選中。
    • state:節(jié)點狀態(tài),'open' 或 'closed'。
    • attributes:綁定到節(jié)點的自定義屬性。
    • target:目標的 DOM 對象。
    名稱參數(shù)描述
    onClicknode當用戶點擊一個節(jié)點時觸發(fā)。代碼實例:
  • $('#tt').tree({
  • onClick: function(node){
  • alert(node.text); // alert node text property when clicked
  • }
  • });
  • onDblClicknode當用戶雙擊一個節(jié)點時觸發(fā)。
    onBeforeLoadnode, param當加載數(shù)據(jù)的請求發(fā)出前觸發(fā),返回 false 則取消加載動作。
    onLoadSuccessnode, data當數(shù)據(jù)加載成功時觸發(fā)。
    onLoadErrorarguments當數(shù)據(jù)加載失敗時觸發(fā),arguments 參數(shù)與 jQuery.ajax 的 'error' 函數(shù)一樣。
    onBeforeExpandnode節(jié)點展開前觸發(fā),返回 false 則取消展開動作。
    onExpandnode當節(jié)點展開時觸發(fā)。
    onBeforeCollapsenode節(jié)點折疊前觸發(fā),返回 false 則取消折疊動作。
    onCollapsenode當節(jié)點折疊時觸發(fā)。
    onBeforeChecknode, checked當用戶點擊復選框前觸發(fā),返回 false 則取消該選中動作。該事件自版本 1.3.1 起可用。
    onChecknode, checked當用戶點擊復選框時觸發(fā)。
    onBeforeSelectnode節(jié)點被選中前觸發(fā),返回 false 則取消選擇動作。
    onSelectnode當節(jié)點被選中時觸發(fā)。
    onContextMenue, node當右鍵點擊節(jié)點時觸發(fā)。代碼實例:
  • // 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 οnclick="append()" data-options="iconCls:'icon-add'">Append</div>
  • <div οnclick="remove()" data-options="iconCls:'icon-remove'">Remove</div>
  • </div>
  • onBeforeDragnode當節(jié)點的拖拽開始時觸發(fā),返回 false 則禁止拖拽。該事件自版本 1.3.2 起可用。
    onStartDragnode當開始拖拽節(jié)點時觸發(fā)。該事件自版本 1.3.2 起可用。
    onStopDragnode當停止拖拽節(jié)點時觸發(fā)。該事件自版本 1.3.2 起可用。
    onDragEntertarget, source當節(jié)點被拖拽進入某個允許放置的目標節(jié)點時觸發(fā),返回 false 則禁止放置。
    target:被放置的目標節(jié)點元素。
    source:被拖拽的源節(jié)點。
    該事件自版本 1.3.2 起可用。
    onDragOvertarget, source當節(jié)點被拖拽到允許放置的目標節(jié)點上時觸發(fā),返回 false 則禁止放置。
    target:被放置的目標節(jié)點元素。
    source:被拖拽的源節(jié)點。
    該事件自版本 1.3.2 起可用。
    onDragLeavetarget, source當節(jié)點被拖拽離開允許放置的目標節(jié)點時觸發(fā)。
    target:被放置的目標節(jié)點元素。
    source:被拖拽的源節(jié)點。
    該事件自版本 1.3.2 起可用。
    onBeforeDroptarget,source,point節(jié)點被放置之前觸發(fā),返回 false 則禁止放置。
    target:DOM 對象,放置的目標節(jié)點。
    source:源節(jié)點。
    point:表示放置操作,可能的值是:'append'、'top' 或 'bottom'。
    該事件自版本 1.3.2 起可用。
    onDroptarget,source,point當節(jié)點被放置時觸發(fā)。 target:DOM 對象,放置的目標節(jié)點。
    source:源節(jié)點。
    point:表示放置操作,可能的值是:'append'、'top' 或 'bottom'。
    onBeforeEditnode編輯節(jié)點前觸發(fā)。
    onAfterEditnode編輯節(jié)點后觸發(fā)。
    onCancelEditnode當取消編輯動作時觸發(fā)。

    方法

    名稱參數(shù)描述
    optionsnone返回樹的選項(options)。
    loadDatadata加載樹的數(shù)據(jù)。
    getNodetarget獲取指定的節(jié)點對象。
    getDatatarget獲取指定的節(jié)點數(shù)據(jù),包括它的子節(jié)點。
    reloadtarget重新加載樹的數(shù)據(jù)。
    getRootnone獲取根節(jié)點,返回節(jié)點對象。
    getRootsnone獲取根節(jié)點,返回節(jié)點數(shù)組。
    getParenttarget獲取父節(jié)點,target 參數(shù)表示節(jié)點的 DOM 對象。
    getChildrentarget獲取子節(jié)點, target 參數(shù)表示節(jié)點的 DOM 對象。
    getCheckedstate獲取選中的節(jié)點。狀態(tài)可用值有:'checked'、'unchecked'、'indeterminate'。如果狀態(tài)未分配,則返回 'checked' 節(jié)點。
    代碼實例:
  • 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
  • getSelectednone獲取選中的節(jié)點并返回它,如果沒有選中節(jié)點,則返回 null。
    isLeaftarget把指定的節(jié)點定義成葉節(jié)點,target 參數(shù)表示節(jié)點的 DOM 對象。
    findid找到指定的節(jié)點并返回該節(jié)點對象。代碼實例:
  • // find a node and then select it
  • var node = $('#tt').tree('find', 12);
  • $('#tt').tree('select', node.target);
  • selecttarget選中一個節(jié)點,target 參數(shù)表示節(jié)點的 DOM 對象。
    checktarget把指定節(jié)點設置為勾選。
    unchecktarget把指定節(jié)點設置為未勾選。
    collapsetarget折疊一個節(jié)點,target 參數(shù)表示節(jié)點的 DOM 對象。
    expandtarget展開一個節(jié)點,target 參數(shù)表示節(jié)點的 DOM 對象。當節(jié)點關閉且沒有子節(jié)點時,節(jié)點的 id 值(名為 'id' 參數(shù))將被發(fā)送至服務器以請求子節(jié)點數(shù)據(jù)。
    collapseAlltarget折疊所有的節(jié)點。
    expandAlltarget展開所有的節(jié)點。
    expandTotarget從根部展開一個指定的節(jié)點。
    scrollTotarget滾動到指定節(jié)點。該方法自版本 1.3.4 起可用。
    appendparam追加一些子節(jié)點到一個父節(jié)點,param 參數(shù)有兩個屬性:
    parent:DOM 對象,要追加到的父節(jié)點,如果沒有分配,則追加為根節(jié)點。
    data:數(shù)組,節(jié)點的數(shù)據(jù)。

    代碼實例:
  • // 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'
  • }]
  • }]
  • });
  • toggletarget切換節(jié)點的展開/折疊狀態(tài),target 參數(shù)表示節(jié)點的 DOM 對象。
    insertparam在指定節(jié)點的前邊或后邊插入一個節(jié)點,param 參數(shù)包括下列屬性:
    before:DOM 對象,前邊插入的節(jié)點。
    after:DOM 對象,后邊插入的節(jié)點。
    data:對象,節(jié)點數(shù)據(jù)。

    下面的代碼演示了如何在選中節(jié)點之前插入一個新的節(jié)點:
  • var node = $('#tt').tree('getSelected');
  • if (node){
  • $('#tt').tree('insert', {
  • before: node.target,
  • data: {
  • id: 21,
  • text: 'node text'
  • }
  • });
  • }
  • removetarget移除一個節(jié)點和它的子節(jié)點,target 參數(shù)表示節(jié)點的 DOM 對象。
    poptarget彈出一個節(jié)點和它的子節(jié)點,該方法和 remove 一樣,但是返回了移除的節(jié)點數(shù)據(jù)。
    updateparam更新指定的節(jié)點,'param' 參數(shù)有下列屬性:
    target(DOM 對象,要被更新的節(jié)點)、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'
  • });
  • }
  • enableDndnone啟用拖放功能。
    disableDndnone禁用拖放功能。
    beginEdittarget開始編輯節(jié)點。
    endEdittarget結束編輯節(jié)點。
    cancelEdittarget取消編輯節(jié)點。

    實現(xiàn)

    使用基本的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數(shù)據(jù)構造樹

    每個節(jié)點可以包括下列屬性:

    id:節(jié)點的 id,它對于加載遠程數(shù)據(jù)很重要。
    text:要顯示的節(jié)點文本。
    state:節(jié)點狀態(tài),'open' 或 'closed',默認是 'open'。當設置為 'closed' 時,該節(jié)點有子節(jié)點,并且將從遠程站點加載它們。
    checked:指示節(jié)點是否被選中。
    attributes:給一個節(jié)點添加的自定義屬性。
    children:定義了一些子節(jié)點的節(jié)點數(shù)組。

    示例代碼:

    <!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>

    效果

    可編輯的樹

    設置點擊事件為可以編輯,設置編輯之后的事件為提示節(jié)點內(nèi)容,獲取到節(jié)點內(nèi)容就可以進行ajax提交數(shù)據(jù)等其他操作。

    ? onClick:function (node) {$(this).tree("beginEdit",node.target);},onAfterEdit:function (node) {alert("編輯后的節(jié)點內(nèi)容為:"+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("編輯后的節(jié)點內(nèi)容為:"+node.text)}})}) </script> </body> </html>

    效果

    給樹添加追加與刪除菜單

    效果

    實現(xiàn)

    <!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("編輯后的節(jié)點內(nèi)容為:"+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能獲取拖拽前的節(jié)點,target能獲取拖拽后的節(jié)點。

    ?

    dnd:true,onDrop:function(target,source,point){alert("原來的節(jié)點:"+source.text);alert("新的節(jié)點:"+$(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("編輯后的節(jié)點內(nèi)容為:"+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("原來的節(jié)點:"+source.text);alert("新的節(jié)點:"+$(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中树的基本操作的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。