我有一个简单的无序列表,其中包含链接。
<body>
<div id="topMenu">
<ul>
<li><a class="selected" href="../Default.aspx">Start</a></li>
<li><a href="../Category/ShowAll.aspx">Categories</a></li>
<li><a href="../Elements/ShowAll.aspx">Elements</a></li>
<li><a href="../Articles/ShowAll.aspx">Articles</a></li>
</ul>
</div>
<asp:ContentPlaceHolder ID="MainContentPlaceholder" runat="server">
</asp:ContentPlaceHolder>
</body>
我想更改链接的类,我点击“选定”类,这是最简单的方法。我想把它变成链接按钮并在会话中保存信息,但这看起来有点过分,必须有一个更简单的方法吗?
答案 0 :(得分:0)
好吧,您可以将<a>
设为runat="server"
,然后从代码隐藏中访问它们:
hyperLink.Attributes["class"] = "opened";
您可以在主页中使用菜单进行此操作,并且您可以让您的子页面发送他们需要选择的超链接的ID,例如
在您的主人(linkWrapper可以是您的<ul>
runat server
)中:
(HyperLink)linkWrapper.FindControl(childPageMenuAnchorLinkId);
在你的孩子身上:
masterPage.ChildPageMenuAnchorLinkId = "link_Customers";
答案 1 :(得分:0)
如果您使用的是jQuery,那么来自其他SO问题的链接可能会帮助您解决问题。
jQuery add class .active on menu
修改强>
根据OP的使用,更正了使用“已选择”类的脚本,而不是“有效”。
所以,如果我从另一个答案“借用”脚本,我相信如果你使用jQuery,这将再次起作用......
$(function(){
var url = window.location.pathname,
urlRegExp = new RegExp(url.replace(/\/$/,'') + "$"); // create regexp to match current url pathname and remove trailing slash if present as it could collide with the link in navigation in case trailing slash wasn't present there
// now grab every link from the navigation
$('#topMenu ul li a').each(function(){
// and test its normalized href against the url pathname regexp
if(urlRegExp.test(this.href.replace(/\/$/,''))){
$(this).addClass('selected');
}
});
});