【问题标题】:changing style sheet of clicked menu item asp.net master page更改单击的菜单项 asp.net 母版页的样式表
【发布时间】:2012-10-06 11:13:39
【问题描述】:

我有一个带有如下菜单的 asp.net 母版页:

 <menu id="menu">
    <nav id="main_nav">   
     <ul id="menu-primary">
      <li ><a href="./">Home</a></li>
      <li><a href="staff.aspx">Staff</a></li>
      <li><a href="">Sales</a></li>
      <li><a href="">Support</a></li>
      <li><a href="">Administration</a></li>
     </ul>
    </nav>
   </menu>

在母版页中,我想更改单击的菜单项的 css。我有这个 jquery:

<script type="text/javascript">
    jQuery(document).ready(function () {
        $('ul li a').each(function () {
            var text_splited = $(this).text().split(" ");
            $(this).html("<span>" + text_splited.shift() + " " + text_splited.join(" ") + "</span> ");
        });

        // click on the first item on page load
        $('#menu-primary li').eq(0).click();

        $('#menu-primary li').click(function (e) {
            alert('here');
            // remove all active classes
            $('#menu-primary li').removeClass('current-menu-item');
            // add active class to clicked item
            $(this).addClass('current-menu-item');
        });
    });


</script>  

这是css

nav#main_nav ul li.current-menu-item a,
nav#main_nav ul li a:hover {background: url("../images/menu_bg.png") no-repeat scroll 0 -149px transparent; border-bottom:1px solid #edf7ff}
nav#main_nav ul li.current-menu-item a span,
nav#main_nav ul li a:hover span{background: url("../images/menu_bg.png") no-repeat scroll 100% -118px transparent;}

这个有效:

//点击页面加载的第一项 $('#menu-primary li').eq(0).click();

     $('#menu-primary li').click(function (e) {
         // remove all active classes
         alert($('#menu-primary li').html());
         $('#menu-primary li').removeClass('current-menu-item');
         // add active class to clicked item
         $(this).addClass('current-menu-item');
         return false;
     });

但是页面没有加载,因为函数返回 false。

显示警报,但 css 未应用于单击的项目。

【问题讨论】:

  • 看起来不错,您确定在 CSS 中设置 current-menu-item 的样式吗?一个指向您页面的链接会很棒。
  • @Abody97 是的,我的 CSS 中有当前菜单项。页面尚未上线
  • 请给我们看看你的 CSS 好吗?
  • @Abody97 请使用 css 检查更新的问题

标签: javascript jquery asp.net css


【解决方案1】:

你可以尝试做这样的事情

$("#menu-primary li.current-menu-item").removeClass("current-menu-item");
$(this).addClass("current-menu-item");

要设置默认选择的第一个菜单项,请像这样添加current-menu-item

<li class="current-menu-item"><a href="#">Menu Item</a></li>

See Working Sample

基于页面 URL 的替代方法

$('#menu-primary li a').each(function() {
    var path = window.location.href;
    var current = path.substring(path.lastIndexOf('/'));
    var url = $(this).attr('href');
    if(current=="")
    $('#menu-primary li a').first().addClass('current-menu-item');


        if (url == current) {

            $(this).addClass('current-menu-item');
    };
});     

【讨论】:

  • 它不工作。另外,我希望默认选择第一个菜单项
  • 我添加了这个已编辑的 li 项目。现在默认选择第一项,但是当我单击任何其他菜单项时,它会被选中,然后在每个菜单项单击时选择第一项作为页面加载
  • 同样的事情。第一项被选中 我没有添加 $("#menu-primary li.current-menu-item").removeClass("current-menu-item"); $(this).addClass("当前菜单项");
  • @DotnetSparrow 能否提供关于 jsfiddle 的演示并重现问题?
  • 尝试使用 nav#main_nav ul li.current-menu-item 而不是将样式应用于 a
猜你喜欢
  • 2014-01-01
  • 2011-06-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-27
  • 2010-12-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多