Fancytree:删除没有子节点的节点

时间:2014-07-18 17:00:04

标签: javascript jquery 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 \ li。如果节点> 1我有错误" Uncaught TypeError:无法调用方法' addChildren' of null"并且只删除了一个节点。

1 个答案:

答案 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();
});

请注意,当所选节点是其他所选节点的后代时,您可能必须添加一些特殊处理,例如:迭代反向或丢弃嵌套节点。