0

選択したノードを削除し、すべての子をその場所に移動したいと考えています。私はコードを使用します:

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 は ul\li を含む div です。ノード > 1 の場合、「Uncaught TypeError: null のメソッド 'addChildren' を呼び出せません」というエラーが発生し、ノードが 1 つだけ削除されます。

4

1 に答える 1

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

選択されたノードが他の選択されたノードの子孫である場合、いくつかの特別な処理を追加する必要があるかもしれないことに注意してください。

于 2014-08-19T09:19:10.240 に答える