2009-10-13 160 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; 
}