【问题标题】:How can I refresh the contents of a jsTree?如何刷新 jsTree 的内容?
【发布时间】:2010-09-10 03:16:03
【问题描述】:

我已经加载了一个带有 AJAX 调用的 jsTree,该调用返回 JSON 数据。如何刷新树以重新加载其内容?

【问题讨论】:

    标签: jquery jstree


    【解决方案1】:

    原来是这么简单的调用:

       tree.jstree("refresh");
    

    【讨论】:

      【解决方案2】:

      在版本 3 中,您可以重新加载树:

      $('#treeId').jstree(true).settings.core.data = newData;
      $('#treeId').jstree(true).refresh();
      

      【讨论】:

      • 这对我有用,因为我的 JSON 数据来自其他函数而不是 AJAX
      • 我不得不将refresh的第二个参数设置为true:tree.jstree(true).refresh(false, true);
      • 使用 AJAX 时,我必须链接 .url -> jstree(true).settings.core.data.url = "/new/data/url"
      【解决方案3】:
      var tree = jQuery.jstree._reference("#files");
      tree.refresh();
      

      var tree = jQuery.jstree._reference("#files");
      var currentNode = tree._get_node(null, false);
      var parentNode = tree._get_parent(currentNode);
      tree.refresh(parentNode);
      

      【讨论】:

      • 我只需要刷新一个特定的节点。感谢这个有用的提示。
      • 是的,我不喜欢它,即使是 v3 API,就像 Internet Explorer 一样。
      【解决方案4】:

      对于 jstree3 。我使用 destroy() 函数并再次创建运行 jstree() 函数的树

      【讨论】:

      • 实际上,这是一个事件,但它有所帮助。 tree.jstree("destroy")
      • @IonicăBizău 这既是一个事件,也是一种方法……但这正是我需要的线索。在树初始化之前不能调用destroy()方法,但是可以触发事件。
      【解决方案5】:

      $('#treeId').data('jstree', false).empty().jstree(json);

      【讨论】:

      • 它不适用于 jstree:3.3.9。你得到一个错误Uncaught TypeError: $jstree.data(...).empty().jstree is not a function
      猜你喜欢
      • 2015-05-01
      • 1970-01-01
      • 2019-02-05
      • 2016-02-21
      • 1970-01-01
      • 2018-03-27
      • 1970-01-01
      • 2011-06-21
      • 2013-01-16
      相关资源
      最近更新 更多