gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 19:42:30 25 4
gpt4 key购买 nike

我想删除选定的节点并将所有子节点移动到它的位置。我使用代码:

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。如果 Nodes > 1,我会收到错误“Uncaught TypeError: Cannot call method 'addChildren' of null”,并且仅删除一个节点。

最佳答案

我建议使用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();
});

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

关于javascript - Fancytree:删除没有子节点的节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24830281/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com