//项的checkbox状态改变后的处理 function CheckBoxClick(chk) { //当前下面所有的节点都选中 ChangeSubItemChecked(chk); //当前节点的父节点都选中 ChangeParentItemChecked(chk); } //当前节点的子节点checked改变处理 function ChangeSubItemChecked(chk) { var chks = chk.parentElement.children[3]; if (chks == null || chks.children == null) return; for (var i=0;i<chks.children.length;i++) { var ch = chks.children[i].children[1]; ch.checked =chk.checked; ChangeSubItemChecked(ch) }
}
//当前节点的父节点checked改变处理 function ChangeParentItemChecked(chk) { var chkParent=chk.parentElement.parentElement.parentElement.children[1]; if(chkParent==null) return ;
function CheckBoxClick(chk)
{
//当前下面所有的节点都选中
ChangeSubItemChecked(chk); //当前节点的父节点都选中
ChangeParentItemChecked(chk);
}
//当前节点的子节点checked改变处理
function ChangeSubItemChecked(chk)
{
var chks = chk.parentElement.children[3];
if (chks == null || chks.children == null) return; for (var i=0;i<chks.children.length;i++)
{
var ch = chks.children[i].children[1];
ch.checked =chk.checked;
ChangeSubItemChecked(ch)
}
}
//当前节点的父节点checked改变处理
function ChangeParentItemChecked(chk)
{
var chkParent=chk.parentElement.parentElement.parentElement.children[1];
if(chkParent==null) return ;
//如果其所有的子节点都为
if(!GetLiCheckdState(chkParent,chk) && !chk.checked && !chkParent.haveChan)
chkParent.checked=false;
else
chkParent.checked=true;
ChangeParentItemChecked(chkParent);
}
我有完整的TREE项目,已经实现了点击其中一个checkbox后,选中所有上级节点,和所有子节点的checkbox
上面只是片段
这个是关键,children[3] 这个你要根据你的tree灵活改动,chk.parentElement表示包含该checkbox的项元素ul /li