21

我一直在尝试获取在 jsTree 中选择的节点的文本。我能够填充树并触发 onSelect 事件,但我无法找出单击了哪个节点。我在网上看到了data.rslt.obj.attr("data")用于获取文本的示例,但是这对我来说是未定义的。此外,当我尝试使用.jstree('get_selected')我无法在对象中的任何位置找到节点文本来获取所选节点时。如何获取节点文本?

这是我的 onSelect 回调函数:

function onSelect(event, data)
{
    // Get the name of the equipment that was selected.
    var selected_node = $("#equipment_tree").jstree('get_selected');
    var equipment_name = data.rslt.obj.attr("data");
}
4

5 回答 5

52

2018 年更新。

感谢@ProfK 的评论,新版本的 jstree 中的 API 发生了变化。在 jstree v3.1.0(或更早版本)中,API 已更改为:

$("#treeContainer").on(
        "select_node.jstree", function(evt, data){
            //selected node object: data.node;
        }
);

对于 jstree 旧版本(2013 年之前)。

您可以通过以下方式获取选定的节点对象及其文本:

$("#treeContainer").bind(
        "select_node.jstree", function(evt, data){
            //selected node object: data.inst.get_json()[0];
            //selected node text: data.inst.get_json()[0].data
        }
);
于 2012-04-19T09:04:45.817 回答
18

从节点获取文本的 jstree 新版本应该使用 data.node.text

$("#treeContainer").on("select_node.jstree",
     function(evt, data){
          alert(data.node.text);
     }
);
于 2014-08-21T07:55:14.027 回答
1
$("#equipment_tree").bind("select_node.jstree", function(evt, data){

             var i, j, r = [], ids=[];
                for(i = 0, j = data.selected.length; i < j; i++) {
                  r.push(data.instance.get_node(data.selected[i]).text);
                }
                alert('Selected: ' + r.join(', '));
           }
);

你必须试试这个。

于 2015-12-22T07:15:04.300 回答
1

对于当前版本,最好使用get_selectedwith full: true,这意味着该方法将返回完整的对象,而不仅仅是 id。

例如:

$("#treeNode").jstree('get_selected', true);

或者:

$("#treeNode").jstree().get_selected(true);

数组中的每个元素都将具有文本或 id 形式的所有属性。

于 2016-06-22T11:56:39.007 回答
-1

click 事件不传递任何数据,因此需要使用事件对象。

.bind("click.jstree", function (event) {
    alert($(event.currentTarget).parent("li:first").text().trim());
});
于 2012-04-19T05:07:09.690 回答