2011-11-27 34 views
0
$("#menu li").click(function() { 
     $("#menu .active").removeAttr("class"); 
     $(this).attr("class","active"); 
    }); 

     <div id="menu"> 
      <ul> 
       <li id="m1" class="active"><a>link 1</a></li> 
       <li id="m2"><a>link 1</a></li> 
       <li id="m3"><a>link 2</a></li> 
       <li id="m4"><a>link 3</a></li> 
       <li id="m5"><a>link 4</a></li> 
       <li id="m6"><a>link 5</a></li> 
       <li id="m6"><a href="">link 6</a></li> 
       <li id="m7"><a href="">link 7</a></li> 
       <li id="m8"><a>link 8</a></li> 
      </ul> 
     </div> 

CSS:CSS jQuery的變化類樣式

#menu .active{ 
    background:white; 
} 

#menu .active a{ 
    opacity:0.5; 
} 

#menu a{ 
    color:#08042b; 
    text-decoration:none; 
    font-size:14px; 
    text-shadow: 1px 0px 1px #6055c8; 
    position:relative; 

} 

當我點擊一個鏈接在第一時間一切似乎是確定.. 當我點擊這個李的第二次背景顏色改變麗字體需要不透明度0.5, 以前的li沒有活躍的className但前面的li文本沒有去不透明度:1 任何幫助?

+3

而不是使用'''attr''來添加和刪除類user [.addClass](http://api.jquery.com/addClass/)和[.removeClass](http://api.jquery .com/removeClass /) – karthik

+0

我試試這個..基本的 ,你有權在這一點上。 但不改變的東西 –

+0

$( 「#菜單裏」)。點擊(函數(){ \t \t $( 「#菜單。主動」)。removeAttr( 「類」)。找到( 「A」)。 css(「opacity」,1); \t \t $(this).addClass(「active」); \t}); 這是行得通的,但爲什麼我原來的代碼不起作用? –

回答

2

如前所述,使用$("#menu .active").removeClass("active");比刪除整個類屬性更正確,因爲您可能會因此失去其他類,從而導致意外行爲。

+0

爲什麼這樣:$(「#menu .active」)。removeClass(「active」)。find(「a」).css(「opacity」,1);工作,但這:$(「#menu .active」)。removeClass(「active」);不?? 任何情況下類都會改變,但只有第一個代碼中的不透明度發生變化 –