初始化后更新jqTree?

发布于 2025-01-06 21:09:39 字数 770 浏览 1 评论 0原文

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

$("select").change(function(){
    var url = 'lab.json';

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

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

第一个调用正在工作,但对于下一个调用,树不会使用新数据进行更新。

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

谢谢

编辑:

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

 $("#treebox").empty().append('<div id="treedata"></div>');
        $("#treedata").tree({
            data: jsonData
        });

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

I'm new with jqTree and I'd like to reload the tree after ajax call. I have something like this :

$("select").change(function(){
    var url = 'lab.json';

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

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

The first call is working but for the next ones the tree doesn't update with the new data.

Any idea how to update the tree after initialization ?

Thanks

EDIT :

I found a solution but it's not perfect. If someone has a better solution let me know :)

 $("#treebox").empty().append('<div id="treedata"></div>');
        $("#treedata").tree({
            data: jsonData
        });

I have to remove the generated content by jqTree using $.empty() and then initialize jqTree each time I want to update the tree with new data.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

还如梦归 2025-01-13 21:09:39

您可以使用函数“loadData”在树中加载新数据。 jqTree最新版本(0.6)支持该功能。

例如:

// 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< /a>

You can use the function 'loadData' to load new data in the tree. This function is supported in the latest version of jqTree (0.6).

For example:

// Assuming the tree exists
var new_data = [
    {
        label: 'node1',
        children: [
            { label: 'child1' },
            { label: 'child2' }
        ]
    },
    {
        label: 'node2',
        children: [
            { label: 'child3' }
        ]
    }
];

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

Also see http://mbraak.github.com/jqTree/#functions-loadData

游魂 2025-01-13 21:09:39

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

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

>

$('#tree1').tree({
   dataUrl: '/example_data.json'
   data: <original data>
});

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

<data-url>?node=<node-id>

并且您必须设置 load_on_demand:

[
  {
    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 属性,如下所示:

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

The current version of jQtree (0.1.3) lets you lazy load from the server.

You documentation says need to ser the url like this:

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

$('#tree1').tree({
   dataUrl: '/example_data.json'
   data: <original data>
});

All subsequent requests will append the node id like so:

<data-url>?node=<node-id>

And you must set load_on_demand:

[
  {
    label: 'Saurischia',
    id: 1,
    load_on_demand: true
  },
  {
    label: 'Ornithischians',
    id: 23,
    load_on_demand: true
  }
]

Also see:

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

But I had trouble getting this to work and had to manually the dataUrl attribute with something like:

$(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;
  });
});
最美不过初阳 2025-01-13 21:09:39

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

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

$jqtree_element.data('simple_widget_tree')._refreshElements()

Assume, you initialized element $jqtree_element = $("#tree1") and run some jqTree initialization: $jqtree_element.tree(...)

I dig into the code (jqTree, 1.0.0) and found this very useful:

$jqtree_element.data('simple_widget_tree')._refreshElements()
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文