2010-08-17 61 views
0

理想情况下,我想将鼠标悬停在我的<li>我的菜单上,并突出显示每个<li>,但作为测试,我有以下更改悬停类。任何想法为什么这不起作用?jQuery .addClass不会更改css

非常感谢。

.dropdownhoverIn a:hover 
{ 
    background-color: White; 
    color: #39C; 
} 

<form id="form1" runat="server"> 
     <div id="multiDropMenu"> 
      <ul id="menu"> 
       <li><a href="#" id="places">Places</a> 
        <ul id="dropdown1"> 
         <li><a href="http://google.com">To Go</a></li> 
         <li><a href="#">To See</a></li> 
        </ul> 
       </li> 
       <li><a href="#">Transportation</a></li> 
      </ul> 
     </div> 
    </form> 

$(document).ready(function() { 
    $("#menu li").hover(function() { 
     $(this).find("ul").find("a").hover(function() { 
      $(this).addClass("dropdownhoverIn"); 
     }); 
     $(this).find("ul").slideToggle(250); 
    }); 
}); 

回答

0

摆脱了 “内部” .hover()分配,

$("#menu > li").hover(function() { 
    $(this).find("ul a").addClass("dropdownhoverIn"); 
    $(this).find("ul").slideToggle(250); 
});​ 

和你们班:hover伪选择。

.dropdownhoverIn { 
    background-color: White; 
    color: #39C; 
}​ 

试试看:http://jsfiddle.net/GKZRU/

当你调用.hover()函数的参数,你分配的处理程序。每次在<ul>上盘旋都没有理由这样做。

如果你使用的是jQuery的.hover(),你并不需要它在CSS中。如果你想要兼容性,你需要一个单独的CSS选择器。

我还将>添加到.hover()的选择器,因为我假定您只希望它激活#menu的孩子。

+0

我也修复了css类。 – EKet 2010-08-17 23:05:25

+0

@Ehsan - 当你说它不工作时,你的意思是什么?我看到我的示例中文字的颜色发生了变化。我不知道你的最终结果应该是什么样子。 – user113716 2010-08-17 23:10:13

+0

不幸的是,我的意思是,没有颜色变化没有发生在我的本地机器上。我正在运行IE 7 ......不知道发生了什么,这在我的环境中是不同的。 – EKet 2010-08-17 23:14:20