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

时间:2013-08-16 07:43:58

标签: javascript 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);

 }); 

请给我一个解决方案。

5 个答案:

答案 0 :(得分:13)

正如jstree(Ivan Bozhanov)的作者在google-Groups Discussion regarding get_checked上指出的那样,它也可以通过以下方式实现:

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

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

Ivan Bozhanov亲自查看小提琴:jsfiddle-Example get_selected

答案 1 :(得分:7)

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

经历一次 jstree google groups

答案 2 :(得分:6)

$.each($("#jstree_demo_div").jstree("get_checked",true),function(){alert(this.id);});

答案 3 :(得分:4)

$('#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(', '));

            }

答案 4 :(得分:0)

使用get_checkedget_selected时,将布尔值作为false传递以获取整个节点,如果您将其发送为true,则将仅返回节点ID。

您来看看https://www.jstree.com/api/#/?q=checkbox&f=get_checked([full])

您也可以查看https://everyething.com/Example-of-jsTree-to-get-all-checked-nodes,以了解不同类型的选择。