当我在树中选择一个项目时,我试图在一个单独的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);});
谢谢。
答案 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