如何实现单击tree的子节点得到其所有父节点的id

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何实现单击tree的子节点得到其所有父节点的id相关的知识,希望对你有一定的参考价值。

参考技术A   监听treepanel的click : ( Node node, Ext.EventObject e ) 事件.
  然后你可以看下TreeNode的api,有个属性parentNode
  你就可以往上回溯直到null,就可以得到所有的父节点了.本回答被提问者和网友采纳

找到树中指定id的所有父节点

const data = [
    id: 1,
    children: [
        id: 2,
        children: [
            id: 3,
        , 
            id: 4,
        ],
    ],
, 
    id: 5,
    children: [
        id: 6,
    ],
];

let nodes = [];
function getParentNodes(id, tree) 
    _getParentNodes([], id, tree);
    return nodes;


function _getParentNodes(his, targetId, tree) 
    tree.some((list) => 
        const children = list.children || [];
        if (list.id === targetId) 
            nodes = his;
            return true;
         else if (children.length > 0) 
            const history = [...his];
            history.push(list);
            return _getParentNodes(history, targetId, children);
        
    )

  要找到一颗树中指定id的那个节点很简单。如果要找到指定的所有父节点,转换一下思路就是将深度遍历的每条顺序都记录下来,直到找到了指定id的节点时,输出该条记录。

  那么仅仅需要在每次遍历时,将上一次的记录传过去即可。

以上是关于如何实现单击tree的子节点得到其所有父节点的id的主要内容,如果未能解决你的问题,请参考以下文章

easyui tree获取父节点的父节点

MySQL实现递归查找树形结构

Antd Tree控件onCheck选中子节点时把父节点也选中

Tree 通过父id找所有子节点

js tree 根据子节点找到所有父节点

使用 Linq 删除 XML 中的子节点