Jstree 复选框,只获取 children id
Jstree checkbox, get only the children id
我有一个 5 层的树,但只有 children 有自定义 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>
但是当我select的时候,我得到了children的id,还有parents的自动id。
["58.11Z", "j2_1212"]
我的id是“58.11Z”,但是"j2_1212"是他的直接parent,jstree自动生成的,我不需要
这是我的基本初始化:
$('#jstree-naf').jstree({
"plugins" : [ "wholerow", "checkbox" ]
});
$('#jstree-naf').on("changed.jstree", function (e, data) {
console.log(data.selected);
});
是否总是return选择的节点作为第一项,然后才是父节点?如果是这样,你可以只拿第一项:
$('#jstree-naf').on("changed.jstree", function (e, data) {
console.log(data.selected[0]);
});
您需要在此处根据您的要求配置您的复选框插件。
请参阅此处 jsTree Checkbox plugin config options。
根据您的要求,您需要将 $.jstree.defaults.checkbox.three_state
设置为 false(因为它默认为 true)和 $.jstree.defaults.checkbox.cascade
到 up/down/undetermined.
正如 jstree 站点中提到的“$.jstree.defaults.checkbox.cascade”
This setting controls how cascading and undetermined nodes are
applied.
If 'up' is in the string - cascading up is enabled,
if 'down' is in the string - cascading down is enabled,
if 'undetermined' is in the string - undetermined nodes will be
used.
If three_state is set to true this setting is automatically set to
'up+down+undetermined'. Defaults to ''
在你的情况下,你不想启用级联,你可以将级联选项设置为'down+undetermined'
继续级联以启用并仍然只获取选定的子元素。
使用 get_bottom_selected 方法。
$('#jstree-naf').jstree().get_bottom_selected()
我有一个 5 层的树,但只有 children 有自定义 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>
但是当我select的时候,我得到了children的id,还有parents的自动id。
["58.11Z", "j2_1212"]
我的id是“58.11Z”,但是"j2_1212"是他的直接parent,jstree自动生成的,我不需要
这是我的基本初始化:
$('#jstree-naf').jstree({
"plugins" : [ "wholerow", "checkbox" ]
});
$('#jstree-naf').on("changed.jstree", function (e, data) {
console.log(data.selected);
});
是否总是return选择的节点作为第一项,然后才是父节点?如果是这样,你可以只拿第一项:
$('#jstree-naf').on("changed.jstree", function (e, data) {
console.log(data.selected[0]);
});
您需要在此处根据您的要求配置您的复选框插件。 请参阅此处 jsTree Checkbox plugin config options。
根据您的要求,您需要将 $.jstree.defaults.checkbox.three_state
设置为 false(因为它默认为 true)和 $.jstree.defaults.checkbox.cascade
到 up/down/undetermined.
正如 jstree 站点中提到的“$.jstree.defaults.checkbox.cascade”
This setting controls how cascading and undetermined nodes are applied.
If 'up' is in the string - cascading up is enabled,
if 'down' is in the string - cascading down is enabled,
if 'undetermined' is in the string - undetermined nodes will be used.
If three_state is set to true this setting is automatically set to 'up+down+undetermined'. Defaults to ''
在你的情况下,你不想启用级联,你可以将级联选项设置为'down+undetermined'
继续级联以启用并仍然只获取选定的子元素。 使用 get_bottom_selected 方法。
$('#jstree-naf').jstree().get_bottom_selected()