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控件。

优质内容筛选与推荐>>
1、结构化数据与非结构化数据的区别
2、程序开发的原则
3、TextView 添加Onclick 无效
4、学Linux到底学什么?
5、hdu 3613"Best Reward"(Manacher算法)


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号