如果我没有错,当使用jstree时,如果选中了父节点,那么它的子节点也会被检查。像这样
我正在做的是,我正在进行ajax调用并仅加载父节点。我检查了父节点,当我展开父节点时,我正在进行另一个ajax调用并仅加载后续的子节点。调用之后,父节点保持选中状态,但其子节点未处于已检查状态。就像下图一样。
以下是我正在使用的代码:
$("#mytree").tree({
ui : {
theme_name : "checkbox"
},
plugins : {
checkbox : {
real_checkboxes : true,
real_checkboxes_names : function (n) { return [("check_" + (n[0].id || Math.ceil(Math.random() * 10000))), 1]; },
}
},
data : {
type : "json",
async : true,
opts : {
method:"GET",
url: "controller/getNodes"
}
},
callback : {
beforedata: function(NODE,TREE_OBJ){
return loadData(NODE,TREE_OBJ);
}
},
selected : false,
opened : "1"
});
我要做的是,当我进行ajax调用以加载子节点时,在调用返回后,如果选中父节点,则还应检查其子节点。请帮帮我,怎么做?
这是loadData的代码:
function loadData(Node,treeModule){
var treeNode = treeModule.get(Node,"json","");
var data="";
try{
data= treeNode.data.title;
}catch(err){
data="";
}
var Code = null;
if(data == "" || data == "Loading ..."){
Code = "";
}else{
try{
Code = Node[0].attributes.code.value;
}catch(e){}
}
return {"code":Code,"isdialog":"false"};
}
我正在寻找一个偶数或类似的东西。
答案 0 :(得分:0)
请记住,您使用的是一个非常旧的jstree版本,多年来一直没有得到支持。迁移到v.3将解决您的所有问题(在您的情况下将检查新加载的节点),但是需要花费一些时间并阅读设置,因为v.3与v.1略有不同。
答案 1 :(得分:0)
如果选中父节点并且
,则在您的json对象中添加一个属性并从服务器端设置'true'使用load_node.jstree事件设置复选框
.bind("load_node.jstree", function (event, data) {
data.inst.change_state('li[selected=selected]', false);
})