我想删除所选节点并将所有孩子移到它的位置。 我使用代码:
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 \ li。如果节点> 1我有错误" Uncaught TypeError:无法调用方法' addChildren' of null"并且只删除了一个节点。
答案 0 :(得分:3)
我建议改为使用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();
});
请注意,当所选节点是其他所选节点的后代时,您可能必须添加一些特殊处理,例如:迭代反向或丢弃嵌套节点。