将jsTree节点设置为“未确定”状态

我正在使用jsTree来显示带有复选框的树。 使用json_data插件按需加载每个级别的节点。

如果检查节点的后代,则该节点应处于“未确定状态”(如ACME和USA)。

在jsTree检查了后代

问题是,树开始崩溃。 ACME看起来unchecked应该undetermined 。 当我最终扩展到一个已检查的节点时,jsTree意识到祖先应该是undetermined

扩展到已检查节点可修复此问题

因此,我需要能够在未加载其子项的情况下将复选框置于undetermined状态。

使用jsTree您可以通过将< jstree-checked类添加到

  • 来预先检查一个框。 我尝试添加jstree-undetermined类,但它不起作用。 它只是将它们置于检查状态。

    这是我的代码:

     $("#tree").jstree({ plugins: ["json_data", "checkbox"], json_data: { ajax: { url: '/api/group/node', success: function (groups) { var nodes = []; for (var i=0; i<groups.length; i++) { var group = groups[i]; var cssClass = ""; if(group.isSelected) cssClass = "jstree-checked"; else if(group.isDecendantSelected) cssClass = "jstree-undetermined"; nodes.push({ data: group.name, attr: { 'class': cssClass } }); } return nodes; } } } }) 

    我的问题

    如何将节点设置为undetermined状态?

    我有同样的问题,我找到的解决方案就是这个:

     var tree = $("#tree").jstree({ plugins: ["json_data", "checkbox"], json_data: { ajax: { url: '/api/group/node', success: function(groups) { var nodes = []; for (var i = 0; i < groups.length; i++) { var group = groups[i]; var checkedState = "false"; if (group.isSelected) checkedState = "true"; else if (group.isDecendantSelected) checkedState = "undetermined"; nodes.push({ data: group.name, attr: { 'checkedNode': checkedState } }); } return nodes; }, complete: function () { $('li[checkedNode="undetermined"]', tree).each(function () { $(this).removeClass('jstree-unchecked').removeClass('jstree-checked').addClass('jstree-undetermined'); }); $('li[checkedNode="true"]', tree).each(function () { $(this).removeClass('jstree-unchecked').removeClass('jstree-undetermined').addClass('jstree-checked'); }); $('li[checkedNode="false"]', tree).each(function () { $(this).removeClass('jstree-checked').removeClass('jstree-undetermined').addClass('jstree-unchecked'); }); } } } }); 

    希望它能帮到你!

    也许这在同时改变了……

    但是现在(版本3.0.0)真正简单的解决方案有效:

    { id : "string" // will be autogenerated if omitted text : "string" // node text icon : "string" // string for custom state : { opened : boolean // is the node open disabled : boolean // is the node disabled selected : boolean // is the node selected undetermined : boolean // is the node undetermined <<==== HERE: JUST SET THIS }, children : [] // array of strings or objects li_attr : {} // attributes for the generated LI node a_attr : {} // attributes for the generated A node }

    直接从源代码中了解到: https : //github.com/vakata/jstree/blob/6507d5d71272bc754eb1d198e4a0317725d771af/src/jstree.checkbox.js#L318