我是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。

最佳答案

您可以使用函数“ 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

07-26 04:44