在jsTree中获取已检查的节点

时间:2014-01-24 00:19:37

标签: javascript jquery jstree

我有一个基于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);

3 个答案:

答案 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
            });