jsTree:如何从jstree获取所有节点?

如何让所有节点都出现在jsTree中?

我正在用xml构建jsTree

Root -----A -----A1 -----A1.1 -----A1.2 -----A2 -----`A2.1` -----A2.2 -----B -----B1 -----B2 -----C -----C1 -----C1.1 -----C2.2 

我想要jsTree中存在的所有节点(ID)的数组如下

预期产出:[Root,A,A1,A1.1,A1.2,A2,A2.1,A2.2,B,B1,B2,C,C1,C1.1,C2.2]

从文档 :

.get_json ( node , li_attr , a_attr )

此函数返回转换回JSON的树节点数组。

有关此doc的相同function的更多信息:

此函数遍历整个树并将其导出为JSON。 请参阅数据源部分以查看输出的格式。

如果将节点指定为第一个参数,则导出中仅包含该节点及其子节点,否则将导出整个树。

只是搜索,你会发现! 🙂

解决方案示例:)

 var xmlString = $("#tree").jstree("get_xml"); var xmlDOM = $.parseXML(xmlString); var IDList =[]; var items = $(xmlDOM).find('root item'); $.each (items, function(key, val){ IDList.push($(val).attr('id')); }) IDList.pop(); 

xmlString =

   Charles Madigen   Charles Madigen  . .  

输出:Root,A,A1,A1.1,A1.2,A2,A2.1,A2.2,B,B1,B2,C,C1,C1.1,C2.2

🙂

您可以遍历每个节点元素,并通过以下方式将其ID放入数组中:

 var idList = []; var jsonNodes = $('#tree').jstree(true).get_json('#', { flat: true }); $.each(jsonNodes, function (i, val) { idList.push($(val).attr('id')); }) 
 var treeData = $('#MyTree').jstree(true).get_json('#', {flat:false}) // set flat:true to get all nodes in 1-level json var jsonData = JSON.stringify(treeData );