我有一个jstree的例子。与json是ajax。
以下是我创建树的方法。
$("#tree").jstree({
"plugins" : ["themes", "json_data", "ui"],
"json_data" : {
"ajax" : {
"type": 'GET',
"url": function (node) {
var nodeId = "";
var url = ""
if (node == -1)
{
//first url called is static
url = "myUrl";
}
else
{
//click on a node "li", get the id, append it to the url.
nodeId = node.attr('id');
url = "myUrl" + nodeId;
}
return url;
},
"success": function (new_data) {
//get the data topNode out of the json object
new_data = new_data.topNode;
return new_data;
}
}
},
});
这是输出。
<div id="tree" class="jstree-classic jstree jstree-0 jstree-focused jstree-default">
<ul>
<li class="jstree-closed jstree-last">
<ins class="jstree-icon"> </ins>
<a class="" href="#">Item 1</a>
</li>
</ul>
</div>
然而,当树被渲染时,&lt; LI&gt; element没有id。应自动附加到&lt; LI&gt;。我错过了什么?
答案 0 :(得分:1)
如果以下是您从ajax调用返回的数据,则需要将"id":"1"
移至属性部分
{"topNode":{"data":"Item 1",
"children":[],
"state":"closed",
"id":"1",
"attributes":{"class":"editContainerLink","href":"#"}
}
}
所以它看起来像
{"topNode":{"data":"Item 1",
"children":[],
"state":"closed",
"id":"1",
"attributes":{"class":"editContainerLink",
"href":"#",
"id":"1"
}
}
}
答案 1 :(得分:0)
只需将属性更改为attr,id就会出现在“a”节点中。我也希望在“li”节点中使用id,但直到现在我的元数据尝试都没有成功。
// the `metadata` property will be saved using the jQuery `data` function on the `li` node
"metadata" : "a string, array, object, etc",