繁体   English   中英

在选定的菜单项asp.net主页上更改背景色

[英]Change backcolor on selected menu item asp.net masterpage

我在由无序列表构成的MasterPage中有一个菜单。 我正在尝试使用JavaScript更改所选标签的颜色。 如果我在锚标记中具有href =“#”,它会很好地工作,但是如果我将实际链接放置到另一个页面,则颜色选项卡将还原回主页。 选择时,我将listitem ID更改为onlink。 我一直在寻找有死胡同的答案的几天。 有一个干净的解决方案吗?

stackoverflow如何在其菜单中实现此目的? [问题] [标签] [用户] [徽章] [未回答]

菜单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>

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

...stuff

#navbar ul li a#onlink
{
   background: #FFF;
   color: #465c71;
}
#navbar ul li a#onlink:hover 
{
   background: #FFF;
   color: #465c71;

...more stuff

当您实际移动到该页面时,需要设置选定的链接。 尝试这样的事情。

$(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");
            }
    });
});

请检查navbarmenulist是否为已渲染元素的ID。 否则,您需要在divul上使用'ClientIdMode =“ Static”'或使用'<%= navbar.ClientID%>'获取ID。 在这里查看工作示例: jsfiddle

另外,您需要对CSS进行一些更改,而不是:

 #navbar ul li a#onlink

请用:

 #navbar ul li a.onlink

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM