在做项目的时候要用到树的级联选择,在我的影响中貌似ExtJs 2.2没有自带的级联选择。然后就有了下面的代码:
tree.on('checkchange',function(node,checked){ selParent(node,checked); selChild(node,checked);},tree);//这个方法是选择父节点,自动选中所有的子节点function selParent(node,checked){ if (node.hasChildNodes()) { node.eachChild(function(child) { child.attributes.checked = checked; var cb = child.ui.checkbox; if (cb){ cb.checked = checked; selParent(child, checked); } }); } }//这个方法是选择子节点,自动选中父节点的父节点 function selChild(node, checked){ if(checked){ var parentNode = node.parentNode; if(parentNode != undefined){ parentNode.attributes.checked = checked; var cb = parentNode.ui.checkbox; if(cb){ cb.checked = checked; selChild(parentNode, checked); } } }else{ var flag = false; if(node == null){ return; } var parentNode = node.parentNode; if(parentNode != undefined){ if(parentNode.hasChildNodes()){ parentNode.eachChild(function(child){ var cd = child.attributes.checked; if(cd == true){ flag = true; } }); } } if(!flag){ parentNode.attributes.checked = checked; var cb = parentNode.ui.checkbox; if(cb){ cb.checked = checked; selChild(parentNode, checked); } } }}