我有一棵5级树,但只有孩子有一个自定义ID。

<div id="jstree-naf">
    <ul>
        {% for key, naf in json["naf"] %}
        <li>{{ key }}
            <ul>
            {% for key2, naf2 in naf %}
                <li>{{ key2 }}
                    <ul>
                    {% for key3, naf3 in naf2 %}
                        <li>{{ key3 }}
                            <ul>
                            {% for key4, naf4 in naf3 %}
                                <li>{{ key4 }}
                                    <ul>
                                    {% for key5, naf5 in naf4 %}
                                        <li id="{{ key5 }}">{{ naf5 }}</li>
                                    {% endfor %}
                                    </ul>
                                </li>
                            {% endfor %}
                            </ul>
                        </li>
                    {% endfor %}
                    </ul>
                </li>
            {% endfor %}
            </ul>
        </li>
        {% endfor %}
    </ul>
</div>


但是,当我选择某些东西时,我得到了孩子的身份证,还有父母的自动身份证。

 ["58.11Z", "j2_1212"]


我的ID是“ 58.11Z”,但“ j2_1212”是他的直接父级之一,由jstree自动创建,但我不需要它。

这是我的基本初始化:

$('#jstree-naf').jstree({
    "plugins" : [ "wholerow", "checkbox" ]
});

$('#jstree-naf').on("changed.jstree", function (e, data) {
    console.log(data.selected);
});

最佳答案

您需要根据此处的要求配置复选框插件。
参见此处jsTree Checkbox plugin config options

根据您的要求,您需要将$.jstree.defaults.checkbox.three_state设置为false(默认设置为true),将$.jstree.defaults.checkbox.cascade设置为up / down / undefined。

如jstree网站中提到的“ $ .jstree.defaults.checkbox.cascade”


  此设置控制级联和不确定节点的方式
  应用。
  
  如果字符串中有'up'-启用了层叠,
  
  如果字符串中有'down'-启用级联,
  
  如果字符串中包含“不确定”,则未确定的节点为
  用过的。
  
  如果three_state设置为true,则此设置自动设置为
  “上+下+不确定”。默认为''


在您不希望启用层叠的情况下,可以将层叠选项设置为“向下+不确定”

要保持级联启用并仍只获取选定的子元素。
使用get_bottom_selected方法。

$('#jstree-naf').jstree().get_bottom_selected()

09-25 20:04
查看更多