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 );