2011-11-27 35 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”);不?? 任何情况下类都会改变,但只有第一个代码中的不透明度发生变化 –