项目中的要求:在treev只能打开一个节点,同级节点要收缩。
通过重写TreeView_ToggleNode,可以实现要求。代码如下:
<script type="text/javascript">
var base_TreeView_ToggleNode = TreeView_ToggleNode;
TreeView_ToggleNode = function (data, index, node, lineType, children) {
CollapseBrothers(data, node, lineType, children);
base_TreeView_ToggleNode(data, index, node, lineType, children);
}
function CollapseBrothers(data, node, lineType, childContainer) {
var parent = childContainer.parentNode;
for (i = 0; i < parent.childNodes.length; i++) {
if (parent.childNodes[i].nodeName.toLowerCase() == "div") {
if (parent.childNodes[i].id != childContainer.id) {
parent.childNodes[i].style.display = "none";
}
} //end if div
else if (parent.childNodes[i].nodeName.toLowerCase() == "table") {
var treeLinks = parent.childNodes[i].getElementsByTagName("a");
if (treeLinks.length > 2 || treeLinks.length == 2) {
var j = 0;
if (treeLinks[j].firstChild.nodeName) {
if (treeLinks[j].firstChild.nodeName.toLowerCase() == "img") {
var img = treeLinks[j].firstChild;
//id相等,则不需处理
if (img.parentNode.id == node.id) {
}
else if (img.parentNode.id != node.id) {
// var imgLineType
var divHide = document.getElementById(img.parentNode.id); //获取当前点击的IMG的<td>
// divHide.style.display = "none";
if ((typeof (img) != "undefined") && (img != null)) {
if (lineType == "l") {
img.src = data.images[14];
}
else if (lineType == "t") {
img.src = data.images[11];
}
else if (lineType == "-") {
img.src = data.images[17];
}
else {
img.src = data.images[4];
}
img.alt = data.expandToolTip.replace(/\{0\}/, TreeView_GetNodeText(node));
}
} //end if (img.parentNode.id != node.id)
} //end if(treeLinks[j].firstChild.nodeName.toLowerCase() == "img")
} //end if (treeLinks[j].firstChild.nodeName)
} //end if (treeLinks.length >2 || treeLinks.length==2)
} // end if (parent.childNodes[i].nodeName.toLowerCase() == "table")
} // end for
} //end function
</script>