JS Tree - Select 父节点,当所有的子节点都被选中

JS Tree - Select parent node when all the child nodes are selected

我正在使用 JSTree。当你检查一个节点时,我想看看它的所有兄弟节点是否也被selected,如果是,我想select父节点和deselect所有子节点。我如何使用 JsTree 实现此目的?

您可能需要对其进行调整以适应您的情况,但这基本上应该是您所需要的:

$(jsTreeSelector).on("select_node.jstree", function (node, selected) {
    var parentNode = $(jsTreeSelector).jstree(true).get_parent(selected.node.id);
    var siblingNodes = $(jsTreeSelector).jstree(true).get_children_dom(parentNode);
    var allChecked = true;
    $(siblingNodes).each(function () {
        if (!$(this).children('.jstree-anchor').hasClass('jstree-clicked')) allChecked = false;
    });
    if (allChecked) {
        $(siblingNodes).each(function () {
            $(jsTreeSelector).jstree(true).deselect_node(this);
        });
        $(jsTreeSelector).jstree(true).select_node(parentNode);
    }
});

确保 three_state 在树配置中设置为 false