如何在jquery jstree中获取已检查的节点

我创建了一个jquery jstree,它工作正常。 现在问题是如何获取已检查节点的详细信息。

用于创建JStree代码是:

$(function () { $("#tree").jstree({ "json_data" : { "data" : [ {"data":"pe_opensourcescanning","id":0,"pId":-1,"children": [{"data":"tags","id":30,"pid":0},{"data":"branches","id":29,"pid":0},{"data":"trunk","id":1,"pid":0,"children":[{"data":"import-export","id":28,"pid":1},{"data":"custom_development","id":12,"pid":1},{"data":"Connectors","id":7,"pid":1},{"data":"support","id":6,"pid":1},{"data":"Installation-Configuration","id":5,"pid":1},{"data":"backup","id":2,"pid":1}]}]} ] }, "plugins" : [ "themes", "json_data", "checkbox", "ui" ] }).bind("select_node.jstree", function (e, data) { alert(data.rslt.obj.data("id")); }); 

现在,在获取已检查的节点时,我需要这些已检查元素的所有属性值。 比如“标签”,json对象看起来像{“data”:“tags”,“id”:30,“pid”:0},所以如果用户选择标签我需要“data”和“id”的值。 我试图编写一些代码,但不幸的是,这是行不通的。

获取已检查的节点。

 $("#" +div2.childNodes[i].id).jstree("get_checked",null,true).each (function () { alert(this.data); alert(this.id); }); 

请给我一个解决方案。

  function submitMe(){ var checked_ids = []; $("#server_tree").jstree("get_checked",null,true).each (function () { checked_ids.push(this.id); }); doStuff(checked_ids); 

通过这个曾经jstree谷歌组

正如jstree的作者(Ivan Bozhanov)指出google-Groups讨论get_checked ,它也可以使用以下方法实现:

 $('#tree').jstree(true).get_selected(); 

这将返回ID的列表,例如[“j1_2”]或[“j1_2”,“j1_3”,“j1_1”]

查看Ivan Bozhanov自己的小提琴: jsfiddle-example get_selected

 $.each($("#jstree_demo_div").jstree("get_checked",true),function(){alert(this.id);}); 
 $('#dvTreeStructure').on('changed.jstree', function (e, data) { var i, j, r = []; for (i = 0, j = data.selected.length; i < j; i++) { r.push(data.instance.get_node(data.selected[i]).text.trim()); } alert('Selected: ' + r.join(', ')); }