jsTree - 在展开之前渲染所有节点?

时间:2015-07-27 13:26:57

标签: jquery nodes jstree children

当我在树中选择一个项目时,我试图在一个单独的div(.childNodes)中显示jsTree父级的所有后代的标题。我的问题是后代似乎是延迟加载的,并且只在扩展节点时才在DOM中呈现,而不是在选择它时。有没有办法在父扩展之前禁用它来渲染所有节点?

这就是我创建树的方式:

container.jstree({
'core': {
    'data': {
        'url': nodesContent,
    }
}});

这就是我处理所选事件的方式:

container.on("changed.jstree", function (e, data) {
var i,
    list = "<ul>";
var children = data.instance.get_children_dom(data.selected[0]);
for (i = 0; i < children.length; i++) {
    list += "<li>" + children[i].innerHTML + "</li>";
}
list += "</ul>";
jQuery(".childNodes").html(list);});

谢谢。

1 个答案:

答案 0 :(得分:1)

不能禁用它 - 只有可见节点保存在DOM中,但您可以执行文档中建议的操作并使用内部jstree模型来检索标题。

container.on("changed.jstree", function (e, data) {
    var i,
        list = "<ul>";
        children = data.instance.get_node(data.selected[0]).children;
    for (i = 0; i < children.length; i++) {
        list += "<li>" + data.instance.get_node(children[i]).text + "</li>";
    }
    list += "</ul>";
    jQuery(".childNodes").html(list);
});

如果要显示所有后代(不仅是立即)替代:
data.instance.get_node(data.selected[0]).children
搭配:
data.instance.get_node(data.selected[0]).children_d