Asp.net Menu控件 点击展开子目录
前台的JS:
<script type="text/javascript">
function FixMenu(menuTable) {
if (!menuTable) { return };
var tbody = menuTable.getElementsByTagName("TBODY")[0];
var tr = tbody.getElementsByTagName("TR")[0];
for (var i = 0; i < tr.childNodes.length; i++) {
var td = tr.childNodes[i];
if (td.tagName && td.tagName.toLowerCase() == 'td') {
var anchor = td.getElementsByTagName("A")[0];
if (anchor) {
var onClick = td.onmouseover;
td.onclick = (function (e, method) { return function (evt) { method.call(e); if (window.event) { evt = window.event } evt.cancelBubble = true; RemoveRootHover(e); __disappearAfter = 3000; Menu_Collapse(e) } })(td, onClick);
td.onmouseover = (function (e) { return function () { HoverRootMenu(e) } })(td);
anchor.style.cursor = "default";
var submnu = WebForm_GetElementById(td.id + "Items");
//if (submnu) { anchor.onclick = function () { return false } }
if (submnu) {
$(td.getElementsByTagName("Img")[0]).toggle(td.onclick, td.onmouseout);
//td.getElementsByTagName("Img")[0].onclick = td.onclick;
td.onclick = anchor.onclick;
}
td.onmouseout = (function (e) { return function () { RemoveRootHover(e) } })(td);
}
}
}
}
function HoverRootMenu(item) {
var node = (item.tagName.toLowerCase() == "td") ? item : item.cells[0];
var data = Menu_GetData(item);
if (!data) { return null; }
var nodeTable = WebForm_GetElementByTagName(node, "table");
if (data.staticHoverClass) {
nodeTable.hoverClass = data.staticHoverClass;
WebForm_AppendToClassName(nodeTable, data.staticHoverClass);
}
node = nodeTable.rows[0].cells[0].childNodes[0];
if (data.staticHoverHyperLinkClass) { node.hoverHyperLinkClass = data.staticHoverHyperLinkClass; WebForm_AppendToClassName(node, data.staticHoverHyperLinkClass) }
return node;
}
function RemoveRootHover(item) {
var node = (item.tagName.toLowerCase() == "td") ? item : item.cells[0];
var data = Menu_GetData(item);
if (!data) { return null; }
var nodeTable = WebForm_GetElementByTagName(node, "table");
if (nodeTable.hoverClass) { WebForm_RemoveClassName(nodeTable, nodeTable.hoverClass) }
node = nodeTable.rows[0].cells[0].childNodes[0];
if (node.hoverHyperLinkClass) { WebForm_RemoveClassName(node, node.hoverHyperLinkClass) }
}
function WebForm_RemoveClassName(element, className) {
var current = element.className;
var oldLength = -1;
if (current) {
while (oldLength != current.length) {
if (current.substring
(current.length - className.length - 1,
current.length) == ' ' + className) {
element.className =
current.substring
(0, current.length - className.length - 1);
oldLength = current.length;
current = element.className;
continue;
}
if (current == className) {
element.className = "";
oldLength = current.length;
current = element.className;
continue;
}
var index = current.indexOf(' ' + className + ' ');
if (index != -1) {
element.className =
current.substring
(0, index) +
current.substring
(index + className.length + 2, current.length);
oldLength = current.length;
current = element.className;
continue;
}
if (current.substring
(0, className.length) == className + ' ') {
element.className =
current.substring
(className.length + 1, current.length);
}
current = element.className;
oldLength = current.length;
}
}
}
</script>
后台的page_load事件中为Menu控件注册方法
Page.ClientScript.RegisterStartupScript(Page.GetType(), "FixMenu", "FixMenu(document.getElementById('" + menuTest.ClientID + "'));", true);
项目中将Menu放到了LoginView控件的Template中,在用户未登录前无法找到Template中的Menu控件。
优质内容筛选与推荐>>