我一直在尝试获取在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");
}
答案 0 :(得分:44)
2018年更新。
感谢@ProfK的评论,API已在新版本的jstree中更改。在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
}
);
答案 1 :(得分:18)
$("#treeContainer").on("select_node.jstree",
function(evt, data){
alert(data.node.text);
}
);
答案 2 :(得分: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(', '));
}
);
你必须尝试这个。
答案 3 :(得分:1)
对于当前版本,最好将get_selected
与full: true
一起使用,这意味着该方法将返回完整的对象,而不仅仅是id。
例如:
$("#treeNode").jstree('get_selected', true);
或:
$("#treeNode").jstree().get_selected(true);
数组中的每个元素都将具有text或id的所有属性。
答案 4 :(得分:-1)
click事件不会传递任何数据,因此需要使用事件对象。
.bind("click.jstree", function (event) {
alert($(event.currentTarget).parent("li:first").text().trim());
});