获取jstree3节点的所有后代(子项和子项等)

时间:2014-07-09 09:44:04

标签: jquery jstree

如何获取jstree3中节点的所有后代?

搜索dom的jstree 1技术不起作用,例如:jstree jquery plugin - Get all child and sub child nodes of parent

我已经多次为jstree1.x看过这个问题,但是对于jstree3,情况有点不同,jstree1.x的答案会混淆而不是帮助。

1 个答案:

答案 0 :(得分:2)

值得注意的是,在jstree 3中,选择所有后代或使用dom的任何其他选择将不会产生正确的结果,因为子节点不仅仅在关闭时隐藏,它们不存在

您可以通过遍历jstree节点树轻松地自己构建此节点列表。 inst是对jstree实例的引用。 nodes是一个闭包,用于存储结果。

var nodes = [];

function traverse(state) {

    // Get the actual node
    var node = inst.get_node(state);

    // Add it to the results
    nodes.push(node);

    // Attempt to traverse if the node has children
    if (inst.is_parent(node)) {
        $.each(node.children, function(index, child) {
            traverse(child);
        });
    }
};

// Id of the node at which you wish to start the traverse (it will also
// be added to the results in this example)
traverse(node_id);

这将获取所有后代节点的列表。

最后,请记住,如果您懒得加载树,可能会有未加载的节点,因此他们的孩子将不会在此列表中显示。