У меня есть дерево 5 уровней, но только дети имеют собственный идентификатор.

<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"]

Мой идентификатор - «58.11Z», но «j2_1212» - один из его прямых родителей, автоматически созданный jstree, но он мне не нужен.

Вот моя основная инициализация:

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

$('#jstree-naf').on("changed.jstree", function (e, data) {
    console.log(data.selected);
});
0
Macbernie 6 Сен 2016 в 01:41

2 ответа

Лучший ответ

Здесь вам необходимо настроить плагин флажка в соответствии с вашими требованиями. См. Здесь jsTree Checkbox параметры конфигурации плагина.

Для ваших требований вам нужно установить для $.jstree.defaults.checkbox.three_state значение false (по умолчанию установлено значение true) и для $.jstree.defaults.checkbox.cascade значение <. сильный > вверх / вниз / неопределенная .

Как упоминалось на сайте jstree для $ .jstree.defaults.checkbox.cascade

Этот параметр определяет, как применяются каскадные и неопределенные узлы.

Если в строке указано «up» - включено каскадирование,

если в строке «down» - включен каскадный режим,

если 'неопределенный' находится в строке - будут использоваться неопределенные узлы.

Если для Three_state задано значение true, для этого параметра автоматически устанавливается значение «вверх + вниз + не определено». По умолчанию «»

В вашем случае вы не хотите, чтобы каскадное включение было включено, вы можете установить для каскадного параметра значение down + undefineded '.

Чтобы продолжать каскадное включение, нужно по-прежнему получать только выбранные дочерние элементы. используйте get_bottom_selected метод.

$('#jstree-naf').jstree().get_bottom_selected()
2
Chetan Joshi 26 Сен 2016 в 12:41

Всегда ли он возвращает выбранный узел в качестве первого элемента, а затем родительские узлы? Если это так, вы можете просто взять первый пункт:

$('#jstree-naf').on("changed.jstree", function (e, data) {
    console.log(data.selected[0]);
});
0
Adam 6 Сен 2016 в 16:23