24

如何获取jsTree中选定节点的 id ?

function createNewNode() {
  alert('test');
  var tree = $.tree.reference("#basic_html");
  selectedNodeId = xxxxxxxxx; //insert instruction to get id here
  tree.create({ data : "New Node Name" }, selectedNodeId);
}
4

14 回答 14

97

无法让 harpo 的解决方案发挥作用,并且由于 Olivier 的解决方案使用内部 jsTree 函数而不愿意使用它,所以我想出了一种不同的方法。

$('#tree').jstree('get_selected').attr('id')

就是这么简单。该get_selected函数返回一个选定列表项的数组。如果你.attr在那个数组上做,jQuery 将查看列表中的第一项。如果您需要多个选择的 ID,则将其视为数组。

于 2011-07-13T03:10:56.670 回答
11

jsTree 中的节点本质上是包装的列表项。这将为您提供对第一个的参考。

var n = $.tree.focused().get_node('li:eq(0)')

$.tree.focused()如果您有对树的引用,则可以替换。

要获取 id,请获取第一个匹配的元素

if (n.length)
    id = n[0].id

或者您可以使用 jQuery attr 函数,该函数适用于集合中的第一个元素

id = n.attr('id');
于 2010-04-06T14:28:17.437 回答
11

jstree版本3.1.1中,您可以直接从以下位置获取它get_selected

$("#<your tree container's id>").jstree("get_selected")
于 2015-07-09T17:08:04.780 回答
5

在最新版本的 jsTree(在 3.3.3 中检查)中,您可以这样做来获取 ID 数组:

var ids = $('#tree').jstree('get_selected');

例如,这将返回["selected_id1", "selected_id2", "selected_id3"]。如果要获取选定的节点(而不是 ID),可以这样做:

var nodes = $('#tree').jstree('get_selected', true);

当前文档包含更多信息。

于 2016-12-06T18:27:08.523 回答
3
  $.jstree._reference('#my_tree_container')._get_node(null, true).each(function() {
    id = $(this).attr("id");
    alert('Id selected: ' + id);        
  });
于 2011-04-18T18:47:53.700 回答
1

我在从具有多个选择的树中获取选定的 ID 时遇到问题。这是我得到它们的方式:

var checked_ids = [];
$("#your-tree-id").jstree('get_selected').each(function(){    
      checked_ids.push($(this).data('id'));                         
});
于 2013-04-22T13:35:21.867 回答
1

就我而言,数据调用不起作用。我使用 attr 函数成功访问了我的节点数据。

$("#tree").jstree("get_selected").attr("my-data-name");
于 2013-07-31T09:49:45.537 回答
1

要获取所有选定的 ID,请使用以下代码

var selectedData = [];
var selectedIndexes;
 selectedIndexes = $("#jstree").jstree("get_selected", true);
jQuery.each(selectedIndexes, function (index, value) {
     selectedData.push(selectedIndexes[index].id);
 });

现在您在“selectedData”变量中拥有所有选定的 id

于 2017-06-16T15:32:23.093 回答
0

使用最新版本的 Jstree;你可以这样做:

<script type="text/javascript>
    var checked_ids = [];
    $('#your-tree-id).jstree("get_checked",null,true).each(function(){
        checked_ids.push(this.id);
    });
    alert(checked_ids.join(","));
</script>
于 2012-06-28T05:39:13.497 回答
0
<script type="text/javascript>
    checked_ids.push($(this).context.id);
</script>
于 2013-11-11T09:50:59.390 回答
0

只需使用

var nodeId = $('#FaqTreeView').jstree().get_selected("id")[0].id;

#FaqTreeView包含 jstree 的 div 的 id 在哪里。

于 2016-06-07T21:41:18.280 回答
0

在某些情况下和/或 jstree 版本中,此解决方案不起作用。

$('#tree').jstree('get_selected').attr('id');

而不是定义的“id”,我什么也得不到。对我来说诀窍是:

$("#tree").jstree("get_selected").toString();
于 2016-09-06T04:41:19.297 回答
0

这些都是旧版本的旧答案。从 3.3.3 版本开始,这将用于获取所选节点的所有属性。

$('#jstree').jstree().get_selected(true)[0]

如果您想要该 id,请在末尾添加 .id 。如果您复制上述代码,您可以查看 Web 开发人员工具中的所有其他属性。

于 2017-01-17T17:10:10.787 回答
0

可以使用如下代码 var nodes = $("#jstree_demo_div").jstree(true).get_selected("full", true);//选中节点列表

nodes[0].id//这将给出数组中第一个对象的id

于 2017-05-08T14:18:27.103 回答