我在页面加载时以编程方式加载dynatree,如下所示
function loadTree(data)
{
var rootNode = $("#tree").dynatree("getRoot");
$.each(data, function () {
var childNode = rootNode.addChild({
title: this.agent_code + ' - ' + this.holder_name,
tooltip: this.holder_name,
isFolder: true,
key:this.agent_code,
});
});
}
现在,在我从服务器检索新数据并希望加载新节点后,它不会删除旧节点。
function reload(data)
{
$("#tree").dynatree("getRoot").visit(function(node){
node.remove();
});
loadTree(data)
}
上面的代码只删除了一个节点。我在这里缺少什么 提前致谢
更新 我通过以下代码尝试了解决方法
function reload(data)
{
$("#tree").remove();
$('#test').html('<div id="tree"></div>');
$('#tree').dynatree(); //reinitialize the tree
loadTree(data);
}
它会重新加载但无法通过延迟加载填充子节点
答案 0 :(得分:1)
这将删除您在初始加载期间添加的所有节点:
$("#tree").dynatree("getRoot").removeChildren();
答案 1 :(得分:0)
最后,我有它的工作。我用这行改变了代码
function reload(data)
{
//get all the available parent nodes
var n = [];
$("#tree").dynatree("getRoot").visit(function(node){
n.push(node.data.key);
});
//delete each node one by one
var tree = $("#tree").dynatree("getTree");
$.each(n,function(index,value){
var Cnode = tree.getNodeByKey(value);
if(Cnode != null) Cnode.remove();
});
loadTree(data);
}
我很确定这不是最好的解决方案。因此,如果有人有更好的方法,请发布另一个答案。