我的代码构建了一个 html 并使用该 html 启动 jstree :
var html = buildHtmlunorderedList()
$("#tree").html(html);
$("#tree").jstree({
"core":{"multiple":false},
"state":{"key":"vmsTree22"},
"plugins":["state","sort"]
}).bind("select_node.jstree",handleLeftClick);`
这工作完美。 现在,每隔几分钟就会再次构建 html,我想用它刷新 jstree,而不需要销毁它并再次启动(这会在每次再次构建树时导致轻弹):
inside a loop {
html = buildHtmlunorderedList();
var tree = $('#tree').jstree({
"core":{"data":html}
});
tree.refresh(true);
}
但我收到错误:未捕获类型错误:无法读取未定义的属性“className”
(在 jstree.js 中:var c = this.get_container_ul()[0].className;
)
它没有找到 jstree-children 类的第一个子级。
我做错了什么? 我没有找到任何直接的示例来说明如何刷新树的整个 html 而不破坏它并再次构建它。
感谢您的帮助
最佳答案
您可以按如下方式替换数据。查看演示 - Fiddle .
$("#tree").jstree().settings.core.data = newData;
$("#tree").jstree().refresh(true);
关于jstree - 如何用 html 刷新 jstree 而不是重建它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35739914/