欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

bootstrap-Treeview实现级联勾选

程序员文章站 2022-03-20 21:44:02
本文实例为大家分享了bootstrap treeview实现级联勾选的具体代码,供大家参考,具体内容如下 核心方法 var nodecheckedsilent...

本文实例为大家分享了bootstrap treeview实现级联勾选的具体代码,供大家参考,具体内容如下

核心方法

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){ 
 $('#searchtree').treeview('checknode',node.nodeid,{silent:true}); 
 var parentnode = $('#searchtree').treeview('getparent',node.nodeid); 
 if(!("nodeid" in parentnode)){ 
  return; 
 }else{ 
  checkallparent(parentnode); 
 } 
} 
//取消全部父节点 
function uncheckallparent(node){ 
 $('#searchtree').treeview('unchecknode',node.nodeid,{silent:true}); 
 var siblings = $('#searchtree').treeview('getsiblings', node.nodeid); 
 var parentnode = $('#searchtree').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){ 
 $('#searchtree').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){ 
 $('#searchtree').treeview('unchecknode',node.nodeid,{silent:true}); 
 if(node.nodes!=null&&node.nodes.length>0){ 
  for(var i in node.nodes){ 
   uncheckallson(node.nodes[i]); 
  } 
 } 
} 

6-27 : 经部分网友反馈,图中的 if(!("id" in perentnode)) 需要改成 if(!("nodeid" in perentnode))才能正常运行,我想应该是版本问题,上面代码中已经改正了。如果运行不了,请改回 if(!("id" in perentnode))试一下。(谢谢大家提出)
因为treeview中silent属性指定了无效(我也不知道为什么委屈),所以多加了两个变量来控制

$('#searchtree').treeview({ 
  showcheckbox:true, 
  data:treedata, 
  onnodechecked:nodechecked , 
  onnodeunchecked:nodeunchecked 
 }); 

效果图:

bootstrap-Treeview实现级联勾选

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。