您好我目前遇到了jsTree上下文菜单的问题。 我想获取所选节点的ID但是我已经查看了许多解决方案,但没有一个有效。我的代码如下。
我使用tree.get_selected($node)
的函数会返回所选节点的对象,但我却在努力访问对象的id参数。我在下面使用了tree.get_selected($node).id
,但它说的是undefined
但是当我看到控制台时显然不是这样。
任何人都可以帮助我出错的地方吗?
$("#tree_1").jstree({
"core" : {
"themes" : {
"responsive": false
},
// so that create works
"check_callback" : true,
'data' : {
'url' : function (node) {
if(node.id=='#') {
var id = 0;
} else {
var id = node.id;
}
return 'organisation/getOrganisationLocations/'+id;
}
}
},
"types" : {
"default" : {
"icon" : "fa fa-folder icon-state-warning icon-lg"
},
"file" : {
"icon" : "fa fa-file icon-state-warning icon-lg"
}
},
"state" : { "key" : "demo3" },
"plugins" : [ "dnd", "state", "types", "contextmenu" ],
"contextmenu":{
"items": function($node) {
var tree = $("#tree_1").jstree(true);
return {
"Create": {
"separator_before": false,
"separator_after": false,
"label": "Create",
"action": function (obj) {
$node = tree.create_node($node);
tree.edit($node);
console.log(tree.get_selected($node).id);
}
},
"Rename": {
"separator_before": false,
"separator_after": false,
"label": "Rename",
"action": function (obj) {
tree.edit($node);
}
},
"Remove": {
"separator_before": false,
"separator_after": false,
"label": "Remove",
"action": function (obj) {
tree.delete_node($node);
}
}
};
}
}
});
答案 0 :(得分:4)
这种方法对我有用:
$(node).attr('id')
答案 1 :(得分:1)
在jstree声明之上声明你的id(在第1行,put var id;)
然后,在data.url函数中,从分配给id的每一行之前删除var。