[英]Change backcolor on selected menu item asp.net masterpage
I have a menu in a MasterPage constructed of unordered list. 我在由无序列表构成的MasterPage中有一个菜单。 I am trying to use javascript to change selected tab color. 我正在尝试使用JavaScript更改所选标签的颜色。 It works fine if i have href="#" in the anchor tags, but if I put an actual link to another page then the color tab reverts back to the home page. 如果我在锚标记中具有href =“#”,它会很好地工作,但是如果我将实际链接放置到另一个页面,则颜色选项卡将还原回主页。 I change the listitem id to onlink when selected. 选择时,我将listitem ID更改为onlink。 I have been searching for couple days with dead end answers. 我一直在寻找有死胡同的答案的几天。 Is there a clean solution for this? 有一个干净的解决方案吗?
How does stackoverflow accomplish this in their menu? stackoverflow如何在其菜单中实现此目的? [Questions] [Tags] [Users] [Badges] [Unanswered] [问题] [标签] [用户] [徽章] [未回答]
Html for menu 菜单HTML
<div id="navbar">
<ul id="menulist">
<li><a onclick="SelectedTab(this);" href="Default.aspx" id="onlink">Home</a></li>
<li><a href="#" id="">View</a></li>
<li><a onclick="SelectedTab(this);" href="About.aspx" id="">About</a></li>
<li><a onclick="SelectedTab(this);" href="Contact" id="">Contact</a></li>
</ul>
</div>
Javascript Java脚本
<script type="text/javascript">
function SelectedTab(sender) {
var aElements = sender.parentNode.parentNode.getElementsByTagName("a");
var aElementsLength = aElements.length;
var index;
for (var i = 0; i < aElementsLength; i++) {
if (aElements[i] == sender)
{
index = i;
aElements[i].id = "onlink";
} else {
aElements[i].id = "";
}
}
}
</script>
Css for the selected tab 所选标签的CSS
...stuff
#navbar ul li a#onlink
{
background: #FFF;
color: #465c71;
}
#navbar ul li a#onlink:hover
{
background: #FFF;
color: #465c71;
...more stuff
You need to set the selected link when you actually move to that page. 当您实际移动到该页面时,需要设置选定的链接。 Try something like this. 尝试这样的事情。
$(function(){
var url=document.location.href;
$("div#navbar ul#menulist li a").each(function(){
var t=$(this).attr("href");
if(t && url.indexOf(t)>0){
$(this).addClass("onlink");
}
});
});
please check if the navbar
and menulist
are the IDs of rendered elements. 请检查navbar
和menulist
是否为已渲染元素的ID。 Otherwise you either need to use 'ClientIdMode="Static"' on div
and ul
or use '<%= navbar.ClientID%>'
to get id. 否则,您需要在div
和ul
上使用'ClientIdMode =“ Static”'或使用'<%= navbar.ClientID%>'
获取ID。 see the working example here: jsfiddle 在这里查看工作示例: jsfiddle
Also you need to make slight change to your CSS
, instead of: 另外,您需要对CSS
进行一些更改,而不是:
#navbar ul li a#onlink
please use: 请用:
#navbar ul li a.onlink
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.