如何获取jstree3中节点的所有后代?
搜索dom的jstree 1技术不起作用,例如:jstree jquery plugin - Get all child and sub child nodes of parent
我已经多次为jstree1.x看过这个问题,但是对于jstree3,情况有点不同,jstree1.x的答案会混淆而不是帮助。
答案 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);
这将获取所有后代节点的列表。
最后,请记住,如果您懒得加载树,可能会有未加载的节点,因此他们的孩子将不会在此列表中显示。