2011-01-20 24 views
3

[Live Demo]的jQuery removeClass除了在電流id

我有徘徊時顯示一定的狀態下的導航菜單,並且還顯示在不同的div文本。

如果用戶不與菜單交互,div自動循環,導航菜單顯示相應的懸停狀態,就好像用戶正在進行交互。

但是,因爲它在循環中,所以如果用戶將鼠標懸停在導航菜單上的另一個鏈接上,我需要在先前突出顯示的元素上移除類別。

我怎樣寫, 「如果ID不是當前懸停的ID,然後removeClass( 'hoverBold')上的所有其他導航鏈接」

回答

2

只需添加這hoverIn:

links.removeClass('hoverBold'); 

你不「T需要採取的類關閉其他元素,因爲當前元素,a:hover.sliderLinks,股hoverBold

工作示例樣式:http://www.jsfiddle.net/MXSkj/1/

+0

超級簡單,工作完美。謝謝,蠻好的! – brianrhea 2011-01-20 17:42:46

0

這樣呢?...

$('#nav li').mouseover(function(){ 
//remove from others 
$('#nav li').removeClass('hoverBold'); 
//add to this 
$(this).addClass('hoverBold') 
}); 
5

jQuery not()

喜歡的東西......要做到這一點

$('.myMenu').hover(function() { 
    $('.myMenu').not(this).removeClass('hoverBold'); 
}); 
+0

上面的`.myMenu`在你的例子中是`.sliderLinks`。抱歉,我在閱讀你的代碼之前發佈了這個例子 – fearofawhackplanet 2011-01-20 17:32:51

0

一個辦法是刪除所有鏈路上hoverBold類,並添加當前鏈路上的它。

$(".sliderLinks").hover(function(){ 
    $(".sliderLinks").removeClass("hoverBold"); 
    $(this).addClass("hoverBold"); 
},function(){ 
    //..resume the automatic behaviour 
}); 

其他將使用的。傳遞給$(".sliderLinks").each()在函數內部is()方法,看看它當前元素

0

.filter

$(".myMenu").click(function() { 
    // store current object 
    var that = this; 
    $(".myMenu").filter(function() { 
     // check object in list is not current object 
     return this != that; 
    }).removeClass("hoverBold"); 

}); 

基本上你傳遞一個濾波函數和每個對象進行測試。如果過濾器返回false(即this ==那個),那麼該對象將從列表中移除。