我有一个基于JSON数据的工作JSTree,复选框插件显示每个项目旁边的框 - 到目前为止一切都很好。现在我想知道用户检查了哪些节点,所以我可以对数据做些什么。
不幸的是,我还没有找到通过文档或网络搜索来实现这一目标的方法。关于SO的一些答案说使用get_checked
方法,但要么我真的遗漏了某些东西,要么我的JSTree版本没有那个(即该字符串不会出现在项目文件中的任何地方)。我的版本是3.0.0,这是最新版本。
有人可以指点我a)如何获取已检查的项目,或b)如何访问树的某些可迭代表示,以便我自己抓住它们?
(我应该提到我对Javascript很新。)
以下是我如何设置树,它基于网站上的文档:
var treeInit = { core: { data : [
/* all my data */
]
}};
treeInit.plugins = ["checkbox"];
$('tree_div').jstree(treeInit);
答案 0 :(得分:8)
我也遇到了与jstree 3.0.0版相同的问题。我经过几个小时的冲浪后找到了一个简单的解希望它能帮到别人。
var result = $('#your_tree').jstree('get_selected');
此行返回所选值的数组。
答案 1 :(得分:1)
我找到了答案。通过调用$('#tree').jstree('get_json')
,您可以获得整个树的JSON表示。从那里开始,通过树节点递归并抓住所有已检查的节点非常简单。同样,这是针对3.0.0版本的(因为似乎API在不同版本中发生了很大变化)。
答案 2 :(得分:0)
使用jsTree的3.3.8版本,我更喜欢使用get_selected如下获取它的方法: 请记住,它仅计算选定的那些节点,不计算任何不确定的节点。有关完整且有效的示例代码,您可以查看https://everyething.com/Example-of-jsTree-to-get-all-checked-nodes
$('.btnGetCheckedItem').click(function(){
var checked_ids = [];
var selectedNodes = $('#SimpleJSTree').jstree("get_selected", true);
$.each(selectedNodes, function() {
checked_ids.push(this.id);
});
// You can assign checked_ids to a hidden field of a form before submitting to the server
});