2014-02-25 67 views
0

我建立這樣一個div:添加/刪除類元素是否包含特定屬性

<div class="navigation fixed-top"> 
<a href="#home" class="active">Home</a> 
<a href="#about">About</a> 
<a href="#contact">Contact</a> 
</div> 

當我點擊About它會自動添加class="active"。例如,當href="#home" d包含class="active"我想將<div class="navigation navigation-fixed-top">更改爲<div class="navigation navigation-fixed-bottom">

我想這樣的:

if($('a[href="#home"]').hasClass('active')) 
{ $(".navigation").toggleClass("fixed-bottom fixed-top"); } 

,輸出是這樣看:class="navigation navigation-fixed-top fixed-bottom fixed-top" 這似乎是剛剛加入的類。

+1

'.not()'返回一個jQuery對象。使用'.is(「。active」)=== false' –

回答

1

怎麼樣?

var isActive = $('a[href="#home"]').hasClass('active'); 
$(".navigation") 
    .toggleClass("navigation-fixed-bottom", isActive) 
    .toggleClass("navigation-fixed-top", !isActive); 
+0

剛試過這個,它在'fixed-top'之後加上'fixed-bottom',輸出看起來像這個'navigation navigation-fixed-top fixed-bottom',它應該看起來像'navigation navigation-fixed-bottom' – agis

+0

我編輯了我的答案。 'navigation','fixed-bottom'和'navigation-fixed-bottom'是截然不同的,完全不相關的類。你不能部分切換它們,如果這是你想要的。 – sabof

+0

現在我得到'getSyntaxError:意外的令牌.' – agis

1

您可以輕鬆地通過使用toggleClass多類切換導航類:

$(".navigation").toggleClass("fixed-bottom fixed-top"); 

假設DIV只有這些類之一,該代碼將其刪除,並添加另一種。再次運行它將恢復原始狀態,依此類推。

+0

我剛剛嘗試過,但似乎是添加這個類沒有做別的。我編輯了我的問題,請看看... – agis

+0

更確切地說輸出看起來像這個'導航導航固定頂部固定底部',它應該看起來像這個'導航導航固定底部' – agis

+0

@亞歷克斯:那麼,你正在使用哪些課程*完全*?你在問題中寫了'fixed-top',你的意思是'navigation-fixed-top'? – Jon

0

我固定在你的東西JSBin:

http://jsbin.com/hawugefi/2/edit

$(function(){ 
    if($('a[href="#home"]').is('.active')) { 
    $(".navigation").toggleClass("fixed-bottom fixed-top"); 
    } 

    console.log($(".navigation").attr('class')) 
}); 

兩個類之間切換,可以使用$.toggle('class1 class2'),如@喬恩提及。

+0

這似乎很好,但我不需要'click'函數我只需要添加'fixed-bottom'類只有當'一個'元素具有該特定屬性並且是活動的,如果不是相反的話 – agis

+0

@收集請檢閱我的更新 - 它現在應該按照需要 – jhohlfeld

相關問題