2012-10-06 66 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