最近对Treeview进行客户端处理,主要是针对复选框的选择,Treeview控件中的图片、复选框、等等,都是用div或者table排列起来。对其进行js事件控制,主要是找到事件的触发控件,并根据其规则对相关的节点进行控制。
![ContractedBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
![ExpandedBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
//判断浏览器
var __nonMSDOMBrowser = (window.navigator.appName.toLowerCase().indexOf('explorer') == -1);
//根据元素ID获取元素
function private_getElementByID(target)
{
var el;
if(__nonMSDOMBrowser)
{
el = document.getElementById(target);
}
else
{
el = document.all[target];
}
return el;
}
//获取触发事件的的目标元素
function private_getEventTarget()
{
var target;
if(__nonMSDOMBrowser)
{
target = event.target;
}
else
{
target = event.srcElement;
}
return target;
}
![ContractedBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
![ExpandedBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
//将所在层级的子节点均进行设置递归
function private_setChildChecked(divID,isChecked)
{
var objchild = divID.children;
var count = objchild.length;
for(var i=0;i<objchild.length;i++)
{
var tempObj = objchild[i];
if(tempObj.tagName=="INPUT" && tempObj.type == "checkbox")
{
if(isChecked)
{
tempObj.checked = false;
}
}
private_setChildChecked(tempObj,isChecked);
}
}