2011-12-04 67 views
1

真的很困惑這裏。我只是試圖在懸停的目標做一個addClass('test') ......我的jQuery看起來是這樣的:jQuery addClass()返回意外的結果

//#nav-main dropdown effects     
$('#nav-main ul li').hover(function() { 
    $('#nav-main ul li').addClass('test'); 
    $(this).find('.dropdown').stop(true,true).slideToggle('slow'); 
    $('#nav-main ul li').removeClass("test"); 
}); 

回報,然而就是HTML從這個打算:

<li id="menu-events">

到這樣的:

<li id="menu-events" class="">

任何想法,爲什麼?

回答

4

你添加和在同一功能刪除的類。 jQuery不會刪除類屬性,即使是空的。看起來你錯過了懸停的另一個回調函數 - 你想刪除類推出?看來你想要更多的東西是這樣的:

//#nav-main dropdown effects     
$('#nav-main ul li').hover(function() { // onRollOver 
    $('#nav-main ul li').addClass('test'); 
    $(this).find('.dropdown').stop(true,true).slideDown('slow'); 
}, function() { // onRollOut 
    $('#nav-main ul li').removeClass("test"); 
    $(this).find('.dropdown').stop(true,true).slideUp('slow'); 
}); 
+0

就是這樣。如此愚蠢而明顯。 – Brian

+0

不要打垮自己。我希望我能說我從來沒有犯過完全一樣的錯誤;) – landons

0

好吧,你正在添加一個類,並刪除類..你期望會發生什麼?你期待jquery刪除空的類屬性?

您可以運行以下命令以刪除任何空的類屬性:

$('*[class=""]').removeAttr('class');

+0

可能烏爾在我之後指出了像landont那樣的錯誤 – Baz1nga

1

大廈從landons的代碼,你可以通過使用this更簡化,並避免了一遍又一遍運行相同的選擇:

//#nav-main dropdown effects     
$('#nav-main ul li').hover(function() { // onRollOver 
    $(this).addClass('test').find('.dropdown').stop(true,true).slideDown('slow'); 
}, function() { // onRollOut 
    $(this).removeClass("test").find('.dropdown').stop(true,true).slideUp('slow'); 
}); 
+0

好的呼叫。我假設這個班只是一個考驗,但你說得對;否則,它會將該類添加到ALL LI,這很少會是你想要的。 – landons