我正在使用带有复选框插件的jsTree。我将级联设置为" down"。这很好用,除了当我想加载已检查和未检查节点的混合数据时,级联会覆盖"状态"设置节点。 E.g。
var data = [
{"id":"p90","parent":"#","text":"Page1", "state": { "selected": true} },
{"id":"p100","parent":"p90","text":"Page2", "state": { "selected": true} },
{"id":"p101","parent":"p100","text":"Page3", "state": { "selected": false} },
{"id":"p102","parent":"p101","text":"Page4", "state": { "selected": true} },
{"id":"p103","parent":"p101","text":"Page5", "state": { "selected": false} }
];
$(function () {
$("#PageTree")
.jstree({
core: { data: data },
plugins: ["checkbox"],
checkbox: { cascade: "down", three_state: false },
expand_selected_onload: true
});
});
结果如下:
但它应该是这样的:
我尝试设置"级联"加载树后设置,但这不起作用。似乎唯一的选择是编写我自己的级联代码,但我正在寻找一个更光滑的选项。
答案 0 :(得分:15)
这就是我最终要做的,这是jsTree(https://github.com/vakata/jstree/issues/774)开发人员推荐的解决方案:
$("#PageTree")
.on('select_node.jstree', function (e, data) {
if (data.event) {
data.instance.select_node(data.node.children_d);
}
})
.on('deselect_node.jstree', function (e, data) {
if (data.event) {
data.instance.deselect_node(data.node.children_d);
}
})
.jstree({
core: { data: pages },
plugins: ["checkbox"],
checkbox: { cascade: "", three_state: false },
expand_selected_onload: true
});