2014-07-18 96 views
0

我想刪除選定的節點並將所有的孩子移到它的位置。 我使用代碼:Fancytree:刪除沒有孩子的節點

ref = $('#tree').fancytree("getTree"), 
searchIDs = ref.getSelectedNodes(); 

searchIDs.forEach(function(node){ 
$children = node.children; 
if ($children!==null)node.parent.addChildren($children,node.getNextSibling()); 
node.remove(); 
}); 

哪裏#tree是DIV與UL \李。如果節點> 1,我有錯誤「Uncaught TypeError:無法調用null的null方法'addChildren',並且只有一個節點被刪除。

回答

2

我會建議使用node.moveTo()代替:

var tree = $("#tree").fancytree("getTree"), 
    selNodes = tree.getSelectedNodes(); 

selNodes.forEach(function(node) { 
    while(node.hasChildren()) { 
     node.getFirstChild().moveTo(node.parent, "child"); 
    } 
    node.remove(); 
}); 

注意,你可能需要增加一些特殊處理時選擇的節點是其他選擇的節點,例如後裔迭代反向或放棄嵌套節點。

+0

感謝您的上述解決方案。 – bhaskarmac