在使用jsTree是,一般为了方便用户勾选会使用 three_state 的默认设置(true),如果 three_state:true jsTree会将checkbox.cascade默认为
// 源码片段
if(this.settings.checkbox.three_state) {
this.settings.checkbox.cascade = 'up+down+undetermined';
}
但是调用check_node()的时候,如果节点有子节点会把子节点一起选中. 可以临时将cascade设置为空,然后设置完勾选之后在设置为up+down+undetermined
var tree = $('selector').jstree(true);
// 暂时禁用级联,防止选中父节点后全选子节点
var cascade = tree.settings.checkbox.cascade;
tree.settings.checkbox.cascade = '';
if (typeof nodeIds === 'string') {
nodeIds = nodeIds.split(',');
}
tree.check_node(nodeIds);
// 恢复级联
tree.settings.checkbox.cascade = cascade;
如果初始化是将 three_state 设置为 false ,后面修改 checkbox.cascade 会不生效