如何使用 html 刷新 jstree 而不是重建它

how to refresh jstree with html instead rebuilding it

我的代码构建了一个 html 并用它启动了 jstree html :

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);
}

但我收到一个错误:Uncaught TypeError: Cannot read 属性 'className' of undefined (在 jstree.js 中:var c = this.get_container_ul()[0].className;) 它没有找到 class jstree-children.

的第一个 children

我做错了什么? 我没有找到任何直接的示例来说明如何在不破坏树的情况下刷新整个 html 树并重新构建它。

感谢您的帮助

您可以按如下方式替换数据。检查演示 - Fiddle.

$("#tree").jstree().settings.core.data = newData;
$("#tree").jstree().refresh(true);