.toggleClass()


.toggleClass( className )傳回:jQuery

說明:根據類別的存在或 state 參數的值,新增或移除一或多個類別,至符合的元素集合中的每個元素。

  • 新增版本:1.0.toggleClass( className )

    • className
      類型:字串
      一個或多個類別(以空白分隔),將針對已配對的集合中每個元素進行切換。
  • 版本新增:1.3.toggleClass( className, state )

    • className
      類型:字串
      一個或多個類別(以空白分隔),將針對已配對的集合中每個元素進行切換。
    • state
      類型:布林值
      布林值(不只是真值/假值),用於決定是否新增或移除類別。
  • 版本新增:3.3.toggleClass( classNames )

    • classNames
      類型:陣列
      一個陣列,包含將針對已配對的集合中每個元素進行切換的類別。
  • 版本新增:3.3.toggleClass( classNames, state )

    • classNames
      類型:陣列
      一個陣列,包含將針對已配對的集合中每個元素進行切換的類別。
    • state
      類型:布林值
      布林值(不只是真值/假值),用於決定是否新增或移除類別。
  • 版本新增:1.4.toggleClass( function [, state ] )

    • function
      類型:函式( 整數 index, 字串 className, 布林值 state ) => 字串
      傳回一個或多個以空白分隔的類別名稱的函式,這些類別名稱將在已配對的集合中每個元素的類別屬性中進行切換。接收集合中元素的索引位置、舊的類別值和狀態作為參數。
    • state
      類型:布林值
      布林值,用於決定是否新增或移除類別。
  • 版本新增:3.3.toggleClass( function [, state ] )

    • function
      類型:函式( 整數 index, 字串 className, 布林值 state ) => 字串 | 陣列
      傳回一個或多個以空白分隔的類別名稱或一個類別名稱陣列,用於切換在相符集合中每個元素的類別屬性。接收集合中元素的索引位置、舊類別值和狀態作為引數。
    • state
      類型:布林值
      布林值,用於決定是否新增或移除類別。

此方法將一個或多個類別作為其參數。在第一個版本中,如果相符元素集合中的元素已經有類別,則會將其移除;如果元素沒有類別,則會將其新增。例如,我們可以將 .toggleClass() 套用至一個簡單的 <div>

1
<div class="tumble">Some text.</div>

當我們第一次套用 $( "div.tumble" ).toggleClass( "bounce" ) 時,我們會得到以下結果

1
<div class="tumble bounce">Some text.</div>

當我們第二次套用 $( "div.tumble" ).toggleClass( "bounce" ) 時,<div> 類別會回復為單一的 tumble

1
<div class="tumble">Some text.</div>

.toggleClass( "bounce spin" ) 套用至同一個 <div> 會在 <div class="tumble bounce spin"><div class="tumble"> 之間交替。

.toggleClass() 的第二個版本使用第二個參數來決定是否應該新增或移除類別。如果此參數的值為 true,則會新增類別;如果為 false,則會移除類別。基本上,陳述

1
$( "#foo" ).toggleClass( className, addOrRemove );

等同於

1
2
3
4
5
if ( addOrRemove ) {
$( "#foo" ).addClass( className );
} else {
$( "#foo" ).removeClass( className );
}

從 jQuery 1.4 開始,如果沒有將引數傳遞至 .toggleClass(),則會在第一次呼叫 .toggleClass() 時切換元素上的所有類別。同樣從 jQuery 1.4 開始,可以透過傳入一個函式來決定要切換的類別名稱。

1
2
3
4
5
6
7
$( "div.foo" ).toggleClass(function() {
if ( $( this ).parent().is( ".bar" ) ) {
return "happy";
} else {
return "sad";
}
});

如果 <div class="foo"> 元素的父元素有 bar 類別,則此範例會為這些元素切換 happy 類別;否則,它會切換 sad 類別。

範例

當段落被按一下時,切換「highlight」類別。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>toggleClass demo</title>
<style>
p {
margin: 4px;
font-size: 16px;
font-weight: bolder;
cursor: pointer;
}
.blue {
color: blue;
}
.highlight {
background: yellow;
}
</style>
<script src="https://code.jquery.com/jquery-3.7.0.js"></script>
</head>
<body>
<p class="blue">Click to toggle</p>
<p class="blue highlight">highlight</p>
<p class="blue">on these</p>
<p class="blue">paragraphs</p>
<script>
$( "p" ).on( "click", function() {
$( this ).toggleClass( "highlight" );
});
</script>
</body>
</html>

示範

在每次第三次按一下該段落時,將「highlight」類別新增到被按一下的段落,每次第一次和第二次按一下時,移除它。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>toggleClass demo</title>
<style>
p {
margin: 4px;
font-size: 16px;
font-weight: bolder;
cursor: pointer;
}
.blue {
color: blue;
}
.highlight {
background: red;
}
</style>
<script src="https://code.jquery.com/jquery-3.7.0.js"></script>
</head>
<body>
<p class="blue">Click to toggle (<span>clicks: 0</span>)</p>
<p class="blue highlight">highlight (<span>clicks: 0</span>)</p>
<p class="blue">on these (<span>clicks: 0</span>)</p>
<p class="blue">paragraphs (<span>clicks: 0</span>)</p>
<script>
var count = 0;
$( "p" ).each( function() {
var $thisParagraph = $( this );
var count = 0;
$thisParagraph.on( "click", function() {
count++;
$thisParagraph.find( "span" ).text( "clicks: " + count );
$thisParagraph.toggleClass( "highlight", count % 3 === 0 );
} );
} );
</script>
</body>
</html>

示範

切換每個 div 的按鈕上指示的類別名稱。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>toggleClass demo</title>
<style>
.wrap > div {
float: left;
width: 100px;
margin: 1em 1em 0 0;
padding-left: 3px;
border: 1px solid #abc;
}
div.a {
background-color: aqua;
}
div.b {
background-color: burlywood;
}
div.c {
background-color: cornsilk;
}
</style>
<script src="https://code.jquery.com/jquery-3.7.0.js"></script>
</head>
<body>
<div class="buttons">
<button>toggle</button>
<button class="a">toggle a</button>
<button class="a b">toggle a b</button>
<button class="a b c">toggle a b c</button>
<a href="#">reset</a>
</div>
<div class="wrap">
<div></div>
<div class="b"></div>
<div class="a b"></div>
<div class="a c"></div>
</div>
<script>
var cls = [ "", "a", "a b", "a b c" ];
var divs = $( "div.wrap" ).children();
var appendClass = function() {
divs.append(function() {
return "<div>" + ( this.className || "none" ) + "</div>";
});
};
appendClass();
$( "button" ).on( "click", function() {
var tc = this.className || undefined;
divs.toggleClass( tc );
appendClass();
});
$( "a" ).on( "click", function( event ) {
event.preventDefault();
divs.empty().each(function( i ) {
this.className = cls[ i ];
});
appendClass();
});
</script>
</body>
</html>

示範

.toggleClass( [state ] )傳回:jQuery已棄用的版本:3.0

說明

這個簽名(僅此而已!)在 jQuery 3.0 中已棄用.