樹形操作1 樹形拖拽選擇

2022-06-10 11:42:10 字數 2727 閱讀 3641

樹形運算元據,做個整理總結。本篇是關於樹節點拖拽選擇,重新生成一棵新樹,並支援刪除節點。demo 是基於 jquery 及 easy-ui 庫實現的。

截圖:

利用 css3 實現。主要運用了:before:after選擇器『畫』了兩個圓,然後利用border進行圓的調整,最後利用animationtransform:rotate()實現旋轉動畫。

html:

css:

.loading 

.loading:before

.loading:after

@keyframes loading

to }

主要 html 結構如下,css 就不展示,比較簡單。

已選標籤(0)

清空

js **比較多,先放個 js **組織結構圖:

其中 event 中實現的是篩選和清空功能。

1. 資料獲取,並渲染左側樹:renderselecttree

treeselectmod.$treetarget.addclass('loading');

settimeout(function ()

return text;

},onloadsuccess: function(e, node) );

}});

treeselectmod.setdraganddrop();

if (isedit)

} else

}, 1000);

2. 拖拽操作:setdraganddrop

// 設定被拖元素

$("#tree_select .tree-node").draggable();

},onstopdrag: function(e)

var node = treeselectmod.$treetarget.tree('getnode', e.data.target); // 獲取被拖動的節點資料

// 過濾

var selecteddata = treeselectmod.selecteddata;

if (node.children && node.children.length) ;

node.children.foreach(function(item) );

})var hassameparentnode = false;

for (var i = 0; i < selecteddata.length; i++)

}if (!hassameparentnode)

} else ;

if (parent) ;

parentnode['children'] = ;

parentnode['children'].push(childnode);

var hassameparentnode = false;

for (var i = 0; i < selecteddata.length; i++) );

if (!arr.length)

break;}}

if (!hassameparentnode) }}

// 最後,渲染 dom

treeselectmod.renderselectedtree(treeselectmod.selecteddata);

}});//設定目標物件允許放置被拖元素

$("#tree_selected").droppable();

3. 渲染已選擇樹,及樹節點刪除:renderselectedtree

$('#tree_selected').tree(

text += 'x';

return text;

},onclick: function(node)

}} else

}if (!selecteddata[i].children.length) }}

// 重新根據過濾後的資料進行渲染 dom

treeselectmod.renderselectedtree(treeselectmod.selecteddata);

},onloadsuccess: function()

});

其他操作比較簡單,就不贅述了,具體實現可看demo。

實現結果,只要每次右側節點拖拽放置了以及右側節點進行了節點刪除挫折,左側 dom 就要進行一遍渲染。可能會存在效能問題,但目前沒更好的實現方案。(歡迎有更好方案的提供建議,~~)

最後就是,目前實現的方案,只支援二級樹結構,多級是不支援的。

樹形選擇排序演算法

樹形選擇排序有時也稱為錦標賽排序。排序過程中,按照錦標賽比賽規則進行,將所有n個資料看成一棵完全二叉樹的葉子結點,首先,完全二叉樹的葉子結點兩兩比較,勝出的兄弟進入樹的上一層繼續和兄弟進行比較,如果某個葉子結點沒有兄弟,則直接進入上一層,一直到二叉樹的第二層的兩個兄弟節點進行比較,勝出者為第一名。為...

js樹形結構操作

按照pid分組,分組可以大大減少遞迴次數。array分組的最好方式是用物件接收array的項,該物件的key值就是分組憑證 按照pid和id的匹配 遞迴 已分組的資料。array轉樹形結構的演算法 params list 代轉化陣列 params parentid 起始節點 預設為 0 params...

silverlight樹形結構區服選擇

利用了silverlight toolkit中的treeview控制項實現了區服選擇。1.引用程式集 system.windows.controls.toolkit.dll 2.新建silverlight子控制項頁面 childregionworld1.xaml 3.在 childregionwor...