如何在jsTree中获取所选节点的ID?

时间:2010-04-06 14:22:29

标签: javascript jquery jstree

如何在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);
}

13 个答案:

答案 0 :(得分:98)

由于无法使用harpo的解决方案,并且不愿意使用Olivier的解决方案,因为它使用了内部的jsTree函数,我提出了一种不同的方法。

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

就这么简单。 get_selected函数返回所选列表项的数组。如果对该数组执行.attr,jQuery将查看列表中的第一项。如果您需要多个选择的ID,请将其视为数组。

答案 1 :(得分: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');

答案 2 :(得分:11)

jstree3.1.1中,您可以直接从get_selected获取:

$("#<your tree container's id>").jstree("get_selected")

答案 3 :(得分:4)

在jsTree的最新版本(在3.3.3中检查)中,您可以执行此操作以获取ID数组:

expense_expense_types/expense_type_form

这将返回,例如var ids = $('#tree').jstree('get_selected'); 。如果要获取所选的节点(而不是ID),可以执行以下操作:

["selected_id1", "selected_id2", "selected_id3"]

current docs包含更多信息。

答案 4 :(得分:3)

  $.jstree._reference('#my_tree_container')._get_node(null, true).each(function() {
    id = $(this).attr("id");
    alert('Id selected: ' + id);        
  });

答案 5 :(得分:1)

我在使用MULTIPLE选项从树中获取所选ID时遇到问题。这就是我得到它们的方式:

var checked_ids = [];
$("#your-tree-id").jstree('get_selected').each(function(){    
      checked_ids.push($(this).data('id'));                         
});

答案 6 :(得分:1)

在我的情况下,数据调用不起作用。 我成功通过使用attr函数访问我的节点数据。

$("#tree").jstree("get_selected").attr("my-data-name");

答案 7 :(得分: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

答案 8 :(得分: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>

答案 9 :(得分:0)

<script type="text/javascript>
    checked_ids.push($(this).context.id);
</script>

答案 10 :(得分:0)

只需使用

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

其中#FaqTreeView是包含jstree的div的id。

答案 11 :(得分:0)

在某些情况下和/或jstree版本中,此解决方案无效。

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

而不是定义&#34; id&#34;我一无所获。 对我来说诀窍是:

$("#tree").jstree("get_selected").toString();

答案 12 :(得分:0)

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

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

如果你想要id,那么最后添加.id。如果复制上面的代码,可以查看Web开发人员工具中的所有其他属性。