2015-03-03 120 views
-1

我想toggle 2個不同的類。 (A b),但我沒有得到結果。 我的代碼有什麼問題?'toggleClass` - 如何在兩個不同的``類名'之間切換'

$('button').on('click', function() { 
 
    $('div').toggleClass("A B"); 
 
});
div{ 
 
    height:20px; 
 
} 
 
.A{ 
 
    border:1px solid red; 
 
} 
 

 
.B{ 
 
    border:1px solid blue; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div></div> 
 
<button>Color Change</button>

回答

3

給你的div一個 '啓動' 類。否則,將首先「切換上都」,下「切換都關閉」等


由於兩者都設定邊界,最後應用的類被使用,而另一個被忽略,所以因此你不會看到'紅色'邊框。

認爲它像在之間切換一個 class - on或off。如果你從開始沒有類,那麼按鈕將添加類(可以理解)。

如果您使用兩個類別進行切換,則應用相同的規則。你從開始都關閉,然後按鈕將切換都在 - 由於CSS的順序/ CSS的特殊性,第二個將覆蓋第一個CSS定義。

所以,爲了'切換',你需要從'開'位置開始,一個在'關'位置。你去了!一旦按下按鈕,就會從開啓到關閉,反之亦然。

$('button').on('click', function() { 
 
    $('div').toggleClass("A B"); 
 
});
div { 
 
    height: 20px; 
 
} 
 
.A { 
 
    border: 1px solid red; 
 
} 
 
.B { 
 
    border: 1px solid blue; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="A"></div> 
 
<button>Color Change</button>

0

$('button').on('click', function() { 
 
    $('div').toggleClass("A B"); 
 
});
div{ 
 
    height:20px; 
 
} 
 
.A{ 
 
    border:1px solid red; 
 
} 
 

 
.B{ 
 
    border:1px solid blue; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="A"></div> 
 
<button>Color Change</button>

+1

這個答案與以前給出相同答案的人有什麼不同?請不要重複的答案。 – 2015-03-03 11:51:56

+0

@RahulDesai如果我們同時發佈答案會怎麼樣?這個問題只有一個答案。 – 2015-03-03 11:54:12

0

無需切換兩個類。您需要分配一個課程,您可以切換另一個課程。

HTML

<div class="A"></div> 
<button>Color Change</button> 

JQUERY

$('button').on('click', function() { 
    $('div').toggleClass("B"); 
}); 

CSS

div{ 
    height:20px; 
} 
.A{ 
    border:1px solid red; 
} 

.B{ 
    border:1px solid blue; 
} 

JSFIDDLE DEMO

如果你在這裏看到的邏輯很簡單。當您單擊該按鈕時,它會將名爲B的附加類添加到div中。一旦你點擊按鈕,你的div代碼就會變成這樣<div class="A B"></div>

所以在你的CSS中A和B的順序是很重要的。例如,如果您將B class移至A class的頂部,那麼您將無法獲得理想的結果。

不工作的CSS:

div{ 
    height:20px; 
} 
.B{ 
    border:1px solid blue; 
} 
.A{ 
    border:1px solid red; 
} 

否則,您可以使用關鍵字important,這樣就不會擔心秩序,但在實踐中並不好。

+0

我同意你的意見。問題是,我得到了從服務器端生成的'element',沒有類名。在這種情況下,我該如何管理? – 3gwebtrain 2015-03-03 12:05:21

+0

@ 3gwebtrain:您可能可以定位jQuery的ready函數並在頁面加載時追加類。 – jbutler483 2015-03-03 12:06:38

+0

是的,有一堆元素。以及我不需要班級名稱總是其他然後他們點擊。我想點擊事件放一些條件會做? – 3gwebtrain 2015-03-03 12:07:22

相關問題