/*******************子节点和父节点级联操作************************/ 'giveRightToRole treepanel':{ checkchange:function(node,checked,options){ //遍历孩子,递归实现找到所有孩子节点 var allChild=function(node,flag){ node.eachChild(function(n){ n.data.checked = flag; n.updateInfo({checked:flag}); if(n.hasChildNodes())//胖墩是否有子节点 { n.expand(); allChild(n,flag); } }); }; //递归实现找到所有父亲节点,并改为选中状态 var allParent=function(node,flag) { node.data.checked=flag; node.updateInfo({checked:flag}); if(node.parentNode!=null) { allParent(node.parentNode,flag); } }; //递归实现找到所有父亲节点,并改为未选中状态 var allParentUnchecked=function(node,flag){ var i=0; node.eachChild(function(n){ if(n.data.checked) { i=1; } }); if(i==0) { node.data.checked=flag; node.updateInfo({checked:flag}); } if(node.parentNode!=null) { allParentUnchecked(node.parentNode,flag); } }; if(node.data.leaf == false){//如果不是叶子节点 if(checked){ //打开节点 node.expand(); allChild(node,true); }else{ node.expand(); allChild(node,false); } }else{ //是叶子节点 if(checked){//如果选中 allParent(node.parentNode,true); } else { allParentUnchecked(node.parentNode,false); } } } },