bootstrap treeview 级联勾选

不说废话,看代码,定义一个div

<div id="tree"></div>

初始化:

$("#tree").treeview({
	showCheckbox:true,
	data:data,
	onNodeChecked:nodeChecked ,
	onNodeUnchecked:nodeUnchecked
});

核心代码:级联勾选等

var nodeCheckedSilent = false;
        function nodeChecked (event, node){    
        	if(nodeCheckedSilent){        
        		return;    
        	}    
        	nodeCheckedSilent = true;    
        	checkAllParent(node);    
        	checkAllSon(node);    
        	nodeCheckedSilent = false;
       } 
       var nodeUncheckedSilent = false;
       function nodeUnchecked  (event, node){
           if(nodeUncheckedSilent)
                   return;
           nodeUncheckedSilent = true;
           uncheckAllParent(node);    
           uncheckAllSon(node);
           nodeUncheckedSilent = false;
       } 
       //选中全部父节点
       function checkAllParent(node){    
       	   $('#tree').treeview('checkNode',node.nodeId,{silent:true});
           var parentNode = $('#tree').treeview('getParent',node.nodeId);    
           if(!("nodeId" in parentNode)){        
           		return;    
           }else{        
           		checkAllParent(parentNode);    
           	}
      }
      //取消全部父节点
      function uncheckAllParent(node){    
      		$('#tree').treeview('uncheckNode',node.nodeId,{silent:true});
      		var siblings = $('#tree').treeview('getSiblings', node.nodeId);
      		var parentNode = $('#tree').treeview('getParent',node.nodeId);    
      		if(!("nodeId" in parentNode)) {        
      			return;    
      		}    
      		var isAllUnchecked = true;  //是否全部没选中
      		for(var i in siblings){        
	      		if(siblings[i].state.checked){            
	      		   isAllUnchecked=false;            
	      		   break;        
	      		}    
      		}    
      		if(isAllUnchecked){
      		    uncheckAllParent(parentNode);    
      		} 
      } 
      //级联选中所有子节点
      function checkAllSon(node){    
      		$('#tree').treeview('checkNode',node.nodeId,{silent:true});    
      		if(node.nodes!=null&&node.nodes.length>0){        
      			for(var i in node.nodes){            
      				checkAllSon(node.nodes[i]);        
      			}    
      		}
      }
      //级联取消所有子节点
      function uncheckAllSon(node){    
      		$('#tree').treeview('uncheckNode',node.nodeId,{silent:true});    
      		if(node.nodes!=null&&node.nodes.length>0){        
      			for(var i in node.nodes){            
      				uncheckAllSon(node.nodes[i]);        
      			}    
      		}
      }

代码拷贝直接用就行了,如果要实现回显,比如编辑要显示已经选择了哪些。

在每个node里面添加state就行:

state:{

  checked:true

}

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值