bootstrap treeview 多级联动check/uncheck

该博客介绍了如何使用Bootstrap Treeview插件实现多级联动的check/uncheck功能。通过引用完整版的CSS和JS文件,并初始化特定参数,可以实现自动联动。同时,文章还提到了一种手动级联的方法,涉及递归联动函数的使用,并提供了调用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

插件地址:https://github.com/patternfly/patternfly-bootstrap-treeview

  1. 自动联动
    引用插件css、js(完全版,不能是min版)后,初始化如下参数:
$('#ftree').treeview({
	data:tdata,
	showCheckbox:true,
	hierarchicalCheck:true
})
  1. 手动级联
    . 递归联动函数
//选中全部父节点
function checkAllParent(node,nodeIds){
    let parentNode = $('#ftree').treeview('getParent',node.nodeId);
    if(!("nodeId" in parentNode)){
        return nodeIds;
    }else {
        nodeIds.push(parentNode.nodeId);
        checkAllParent(parentNode,nodeIds);
    }
}
//取消全部父节点
function uncheckAllParent(node,nodeIds){
    let siblings = $('#ftree').treeview('getSiblings', node.nodeId);
    let parentNode = $('#ftree').treeview('getParent',node.nodeId);
    if(!("nodeId" in parentNode)) {
        return nodeIds;
    }

    let isAllUnchecked = true;  //是否全部没选中
    for(let i in siblings){
        if(siblings[i].state.checked){
            isAllUnchecked=false;
            break;
        }
    }
    if(isAllUnchecked){
        nodeIds.push(parentNode.nodeId);
    }
    uncheckAllParent(parentNode,nodeIds);
}
//级联选中所有子节点
function getAllSons(node,nodeIds){
    nodeIds.push(node.nodeId);
    if(node.nodes!=null&&node.nodes.length>0){
        for(let i in node.nodes){
            getAllSons(node.nodes[i],nodeIds);
        }
    }
}

调用方法

$('#ftree').on('nodeChecked',function (event,node) {
    let chekableNodeIds=[];
    checkAllParent(node,chekableNodeIds);
    getAllSons(node,chekableNodeIds);
    $('#ftree').treeview('checkNode',[chekableNodeIds,{silent:true}])
});

$('#ftree').on('nodeUnchecked',function (event,node) {
    let chekableNodeIds=[];
    uncheckAllParent(node,chekableNodeIds);
    getAllSons(node,chekableNodeIds);
    $('#ftree').treeview('uncheckNode',[chekableNodeIds,{silent:true}])
})

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值