2011-09-07 60 views
-2
​​

運行上述代碼,<p>的類將通過按鈕單擊在「ABC else」和「ABC」之間切換。Jquery ToggleClass寬度分隔類名稱

例如:

第1點擊:<p class="ABC">成爲<p class="ABC else">

第2點擊:<p class="ABC else">成爲<p class="ABC">

不過,我想 「ABC」 和 「ABCelse」 (之間進行swiched類名ABC和ELSE之間沒有空格)。有沒有辦法解決這個問題?提前致謝。

+0

那你然後期待? 'ABCelse'? – yoda

+0

所以你想*刪除* ABC類和*添加* ABCelse類? –

+0

爲什麼不呢?只需爲'.else'添加一個新樣式 –

回答

2

首先,它們之間存在空格的原因是因爲.toggle()將類'else'添加到div。所以,現在有兩類:&名爲.abc的.else

你想要做的實際上是刪除類和名爲.abc添加類.ABCelse或刪除類.ABCelse並添加類什麼名爲.abc:

$('button').click(function(){ 
    $(this).find('.ABC').removeClass('ABC').addClass('ABCelse'); 
    $(this).find('.ABCelse').removeClass('ABCelse').addClass('ABC'); 
}); 
+1

這不會只工作一次嗎?由於您明確地刪除和添加類,因此它會消除類之間來回的原始能力。 – Brandon

+0

@Brandon如果這些類被存儲在一個數組或類似的東西,儘管如果我不得不選擇,我不會這樣做。 – yoda

+0

@Brandon。我編輯了我的答案。我提供的代碼現在將以您想要的方式有效地切換類。 – maxedison

3

你可以做這樣的事情,從ABCelse單獨切換ABC類。

$(this).find(".ABC").toggleClass("ABC").toggleClass("ABCelse"); 
+0

謝謝,@布蘭登。也許我沒有清楚地說清楚。我想要的是className「ABCelse」和「ABC」通過單擊按鈕來切換。但是,在我們的解決方案中,「ABCelse」不能更改爲「ABC」。 – Acubi

+0

@emily,我很困惑。在我的解決方案中,ABCelse可以改回ABC。這就是toggleClass所做的。這不是你想要的嗎? – Brandon

2
$(":button").click(function(){ 

    $("div").toggleClass(function(){ 

     if($(this).is(".ABC")){return "else";} 
     else if($(this).is(".else")){return "ABC";} 

    }); 
}); 

這裏是小提琴http://jsfiddle.net/DgAPR/