我是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。
发布于 2012-03-25 17:37:36
您可以使用函数'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
发布于 2012-10-25 08:40:41
当前版本的jQtree (0.1.3)允许您从服务器延迟加载。
您的文档说明需要像这样提供url:
<div id="tree1" data-url="/nodes/"></div>
$('#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;
});
});发布于 2015-05-08 23:38:29
假设您初始化了元素$jqtree_element = $("#tree1")并运行了一些jqTree初始化:$jqtree_element.tree(...)
我深入研究了代码(jqTree,1.0.0),发现这非常有用:
$jqtree_element.data('simple_widget_tree')._refreshElements()https://stackoverflow.com/questions/9325041
复制相似问题