Jstree复选框,只获取子ID

时间:2016-09-05 22:41:35

标签: javascript jstree

我有一个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"]

我的身份是&#34; 58.11Z&#34;,但&#34; j2_1212&#34;是他的直接父母之一,由jstree自动创建,但我不需要它。

这是我的基本初始化:

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

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

2 个答案:

答案 0 :(得分:2)

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

根据您的要求,您需要将 $.jstree.defaults.checkbox.three_state 设置为 false (因为它默认为true)和 $.jstree.defaults.checkbox.cascade 上/下/未确定

正如jstree网站上提到的那样,$。jstree.defaults.checkbox.cascade&#39;

  

此设置控制级联和未确定节点的方式   应用

     

如果&#39; up&#39;在字符串中 - 启用了级联,

     

如果&#39; down&#39;在字符串中 - 启用级联向下,

     

如果未确定&#39;在字符串中 - 未确定的节点将是   用过的。

     

如果three_state设置为true,则此设置自动设置为   &#39;高达+下+未确定&#39 ;.默认为&#39;&#39;

在您的情况下,您不希望级联启用,您可以将级联选项设置为&#39; 向下+未确定&#39;

要继续启用级联,仍然只获取选定的子元素。 使用get_bottom_selected方法。

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

答案 1 :(得分:0)

它是否始终将所选节点作为第一个项目返回,然后是父节点?如果是这样,你可以采取第一项:

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