jsTree 禁用一些复选框

jsTree disable some of the checkboxes

将 jsTree (3.1.0+) 与复选框插件一起使用是否可以允许并非所有复选框都选中 - 禁用其中一些复选框?

我在这里找到了旧版本 jsTree 的解决方案 jstree disable checkbox 但它不适用于 jsTree 3.1.0+ 版本。

隐藏复选框的解决方案jsTree Hide Checkbox有效,但如果我点击文件夹,隐藏的复选框仍然会被选中。

谢谢。

请记住,除非您将 checkbox.tie_selection 用作 false,否则选择和检查是一回事。

因此您只需在要禁用的节点上调用 .disable_node()


编辑:使用 repo 中的最新代码(注意 - 不是 3.1.1,而是最新代码): https://github.com/vakata/jstree/archive/master.zip

您现在可以指定 checkbox_disabled 状态:

<div id="jstree">
    <ul>
        <li data-jstree='{"checked":true}'>checked</li>
        <li data-jstree='{"checkbox_disabled":true}'>checked</li>
    </ul>
</div>

当然也在JSON:

{ "id" : "Test node", "state" : { "checkbox_disabled" : true } }

您还可以使用 enable_checkbox(node)disable_checkbox(node) 在运行时更改复选框的禁用状态。

要完全隐藏特定节点的复选框,请添加以下 JS 代码

$('#tree_2').on('ready.jstree', function () {
  $("#tree_2").jstree().get_node("node1_id").a_attr["class"] = "no_checkbox";
  $("#tree_2").jstree().get_node("node2_id").a_attr["class"] = "no_checkbox";

....
});

并在CSS中添加以下样式

.no_checkbox > i.jstree-checkbox {
 display: none;
}

它将完全隐藏提供的节点 ID 中的复选框,这对我来说就像一个魅力。 Thanks to this link.