2009-10-13 83 views
1

我想不通为什么我不能从一个类中删除一个类,然后添加一个新的类。 我可以使用.css(...)更改其css,但使用.removeClass和.addClass似乎不起作用。jQuery添加和删除锚上的类

我在一些跨度上使用添加和删除类,并且工作得很好。 任何人都知道我做错了什么?非常感谢!

的HTML

<ul id="menu"> 
    <li><span>&nbsp;</span><span><a href="#">Home</a></span></li> 
    <li><span>&nbsp;</span><span><a href="#">Test</a></span></li> 
    <li><span>&nbsp;</span><span><a href="#">Test</a></span></li> 
    <li><span>&nbsp;</span><span><a href="#">LaLa</a></span></li> 
    <li><span>&nbsp;</span><span><a href="#">Test</a></span></li> 
    <li><span>&nbsp;</span><span><a href="#">Blah</a></span></li> 
</ul> 

的CSS

.menuText{ 

    text-decoration: none; 
    color: red; 

} 

.menuTextA{ 
    text-decoration: none; 
    color: #1A4588; 
} 

jQuery的

$('li', 'ul#menu').each(function() { 

       $(this).mouseover(function() { 

        $('span', this).eq(0).removeClass('menuTabLeft'); // works 
        $('span', this).eq(1).removeClass('menuTabRight'); // works 

        $('span', this).eq(0).addClass('menuTabLeftA'); // works 
        $('span', this).eq(1).addClass('menuTabRightA'); // works 

        //$('a', this).eq(0).removeClass('menuText'); // doesnt work 
        //$('a', this).eq(0).addClass('menuTextA'); // doesnt work 

        $('a', this).eq(0).css('color', '#1A4588'); // works 
    }); 
}); 
+0

如果我的代码复制并粘贴到测试页并取消评论部分的注释,并删除//作品线,它按预期工作。所以问题不在于你的代码。 – 2009-10-13 16:23:15

+1

我想你有其他的CSS规则覆盖.menuText/.menuTextA – Greg 2009-10-13 16:29:57

+0

你禁用JS? – powtac 2009-10-13 16:47:15

回答

0

这个怎么样速战速决:

$("#menu li").each(function() { 
    $(this).mouseover(function() { 
     var elems = $("span", this); 
     $(elems[0]).removeClass("menuTabLeft").addClass("menuTabLeftA"); 
     $(elems[1]).removeClass("menuTabRight").addClass("menuTabRightA"); 
     $('a', this).removeClass("menuText").addClass("menuTextA"); 
    }); 
}); 

但对于一个更好的修复(无需脚本):

#menu a { 
    text-decoration: none; 
    color: red; 
    font-size: 30px; 
} 

#menu a:hover{ 
    text-decoration: none; 
    color: #1A4588; 
    font-size: 60px; 
} 
1

你为什么不只是使用CSS伪选择?

.menuText:hover{ 
    text-decoration: none; 
    color: #1A4588; 
}