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

时间:2016-03-02 06:21:37

标签: jstree

我的代码构建了一个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);
}

但是我收到一个错误:未捕获的TypeError:无法读取属性' className'未定义的 (在jstree.js中:var c = this.get_container_ul()[0].className;) 哪个接缝它找不到第一个孩子的jstree-children。

我做错了什么? 我没有找到任何直接的例子,说明如何刷新树的整个html而不破坏它并重新构建它。

感谢您的帮助

1 个答案:

答案 0 :(得分:2)

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

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