【问题标题】:How to get checked nodes in jquery jstree如何在 jquery jstree 中获取已检查的节点
【发布时间】:2013-08-16 07:43:58
【问题描述】:

我创建了一个 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对象看起来像{“数据”:“标签”,“id”:30,“pid”:0},所以如果用户选择标签我需要“数据”和“id”的值.我试图写一些代码,但不幸的是这不起作用。

获取检查节点。

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

 }); 

请给我一个解决方案。

【问题讨论】:

  • 你为什么要为这个问题标记java
  • @Abu : 我已经提交了编辑

标签: javascript jquery jstree


【解决方案1】:

正如 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

【讨论】:

    【解决方案2】:
      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

    【讨论】:

    • 就推送而言,上述代码运行良好。但是如何获取“checked_ids”的内容。请给我一个例子。
    • document.getElementById('jsfields').value = checked_ids.join(",");
    • 感谢您的跟进。你最后的评论很好。现在我知道问题出在“this.id”上,这里我没有检查元素 id。请帮助我。
    • 其实为了创建jstree,我的json对象是这样的...... {"data":"ca_administration","id":0,"pId":-1,"path":" /ca_administration","children":[{"data":"trunk","id":3,"pid":0,"path":"ca_administration/trunk"},{"data":"branches", "id":2,"pid":0,"path":"ca_administration/branches"},{"data":"tags","id":1,"pid":0,"path":"ca_administration /tags"}]} 现在对于每个选中的节点,我需要“数据”和“路径”值。请帮助如何做到这一点。
    【解决方案3】:
    $.each($("#jstree_demo_div").jstree("get_checked",true),function(){alert(this.id);});
    

    【讨论】:

      【解决方案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(', '));
      
                  }
      

      【讨论】:

        【解决方案5】:

        在使用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 了解不同类型的选择。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-05-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-04-25
          • 1970-01-01
          相关资源
          最近更新 更多