2012-10-06 67 views
0

我有一个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;} 

这一个工程:

//点击第一个项目在页面加载 $('#菜单一次Li “).EQ(0)。单击();

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

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

显示警报,但css不应用于点击的项目。

+0

这看起来很好,你确定你正在CSS样式'current-menu-item'?链接到您的网页会很好。 – Chris

+0

@ Abody97是的,我在我的CSS有current-menu-item。页面尚未联机 – DotnetSparrow

+0

请问您可以向我们展示您的CSS吗? – Chris

回答

0

你能尝试做这样的

$("#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'); 
    }; 
});  
+0

它不工作。此外,我希望默认选择第一个菜单项 – DotnetSparrow

+0

Downvoter请评论,以便我知道我做错了什么。 – freebird

+0

我添加了这个编辑过的li项目。现在第一个项目被默认选中,但是当我点击任何其他菜单项时,它会被选中,然后第一个项目被选为每个菜单项上的页面加载点击 – DotnetSparrow