У меня есть дерево 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);
});
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()
Всегда ли он возвращает выбранный узел в качестве первого элемента, а затем родительские узлы? Если это так, вы можете просто взять первый пункт:
$('#jstree-naf').on("changed.jstree", function (e, data) {
console.log(data.selected[0]);
});
Похожие вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript/JS) и его различных диалектах/реализациях (кроме ActionScript). Имейте в виду, что JavaScript — это НЕ то же самое, что Java! Включите все ярлыки, относящиеся к вашему вопросу; например, [node.js], [jQuery], [JSON], [ReactJS], [angular], [ember.js], [vue.js], [typescript], [svelte] и т. д.