首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否在初始化后更新jqTree?

是否在初始化后更新jqTree?
EN

Stack Overflow用户
提问于 2012-02-17 16:26:36
回答 3查看 5.2K关注 0票数 4

我是jqTree的新手,我想在ajax调用之后重新加载树。我有这样的东西:

代码语言:javascript
复制
$("select").change(function(){
    var url = 'lab.json';

    if ($(this).val() === 'RAD') {
        url = 'rad.json';
    }

    $.get(
        url, 
        function(jsonData) {
            $("#treedata").tree({data: jsonData});
        }, 
        "json"
    );
});

第一个调用是有效的,但是对于下一个调用,树不会使用新数据进行更新。

你知道如何在初始化后更新树吗?

谢谢

编辑:

我找到了一个解决方案,但它并不完美。如果有人有更好的解决方案,请告诉我:)

代码语言:javascript
复制
 $("#treebox").empty().append('<div id="treedata"></div>');
        $("#treedata").tree({
            data: jsonData
        });

我必须使用$.empty()删除jqTree生成的内容,然后在每次想要用新数据更新树时初始化jqTree。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-03-25 17:37:36

您可以使用函数'loadData‘在树中加载新数据。最新版本的jqTree (0.6)支持此功能。

例如:

代码语言:javascript
复制
// Assuming the tree exists
var new_data = [
    {
        label: 'node1',
        children: [
            { label: 'child1' },
            { label: 'child2' }
        ]
    },
    {
        label: 'node2',
        children: [
            { label: 'child3' }
        ]
    }
];

$('#tree1').tree('loadData', new_data);

另请参阅http://mbraak.github.com/jqTree/#functions-loadData

票数 5
EN

Stack Overflow用户

发布于 2012-10-25 08:40:41

当前版本的jQtree (0.1.3)允许您从服务器延迟加载。

您的文档说明需要像这样提供url:

<div id="tree1" data-url="/nodes/"></div>

代码语言:javascript
复制
$('#tree1').tree({
   dataUrl: '/example_data.json'
   data: <original data>
});

所有后续请求都将附加节点id,如下所示:

代码语言:javascript
复制
<data-url>?node=<node-id>

并且您必须设置load_on_demand:

代码语言:javascript
复制
[
  {
    label: 'Saurischia',
    id: 1,
    load_on_demand: true
  },
  {
    label: 'Ornithischians',
    id: 23,
    load_on_demand: true
  }
]

另请参阅:

http://mbraak.github.com/jqTree/examples/example5.html

但是我很难让它正常工作,所以我不得不手动使用dataUrl属性,如下所示:

代码语言:javascript
复制
$(document).ready(function() {
  $("#tree1").tree({
    dataUrl: function(node) {
      if (node) {
        return '/nodes.json?node=' + node.id;
      } else {
        return '/nodes.json'
      }
    }
  }).bind('tree.click', function(event) {
    var node = event.node;
  });
});
票数 0
EN

Stack Overflow用户

发布于 2015-05-08 23:38:29

假设您初始化了元素$jqtree_element = $("#tree1")并运行了一些jqTree初始化:$jqtree_element.tree(...)

我深入研究了代码(jqTree,1.0.0),发现这非常有用:

代码语言:javascript
复制
$jqtree_element.data('simple_widget_tree')._refreshElements()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9325041

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档