下載點:
<script src="jquery-ui.min.js"></script> <link rel="stylesheet" href="fancytree\skin-win8-n\ui.fancytree.min.css"> <script src="fancytree\jquery.fancytree-all.min.js"></script> <div id="tree"></div>
<script>
$(function(){
$("#tree").fancytree({
source: [
{title:"folder A", folder:true, children: [
{title:"file C", folder:false},
{title:"file D", folder:false}
]},
{title:"folder B", folder:true},
{title:"file A", folder:false},
{title:"file B", folder:false}
]
});
});
</script>
效果示範:

添加 Drag & Drop:
<script>
$(function(){
$("#tree").fancytree({
source: [
{title:"folder A", folder:true, children: [
{title:"file C", folder:false},
{title:"file D", folder:false}
]},
{title:"folder B", folder:true},
{title:"file A", folder:false},
{title:"file B", folder:false}
],
extensions:["dnd","edit"],
dnd:{
autoExpandMS:400,
focusOnClick:true,
preventVoidMoves:true,
preventRecursiveMoves:true,
dragStart:function(node, data){
//node -> 你所Select的node
//可以透過 getPath來取得位置 node.getPath()
return true;
},
dragEnter:function(node, data){
//drag並進入另1個node時觸發
return true;
},
dragDrop:function(node, data){
//進入並drop時觸發
return true;
}
},
activate: function(event, data){
//var node = data.node;
},
click: function(event, data){
//var node = data.node;
}
});
});
</script>
效果示範:

API 教學:
let tree = $.ui.fancytree.getTree("#tree");
let nodeArr = tree.findAll("folder"); //取得含有"folder" 字眼的node
console.log(nodeArr);
for(let i =0;i<nodeArr.length;i++){
console.log(nodeArr[i].getPath());
}
以上結果:

一些可能有用的API
node.removeChildren(); //移除底下的child
//添加底層的child
node.addChildren([
{title:"file_name", folder:false, icon:"imgs/file.png"},
{title:"foldee_name", folder:true, icon:"imgs/folder.png"}
]);
node.isExpanded(); //return boolean 檢查是否已經打開
node.toggleExpanded(); //切換摺疊