.toggleClass()

.toggleClass( className )返回类型:jQuery

描述:从匹配的元素集合的每个元素上添加或删除一个或多个类,取决于类是否存在,或者状态参数的值。

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

    • className
      类型:String
      一个或多个类名(用空格隔开),针对匹配集合中的每个元素,切换它们。
  • 增补版本:1.3.toggleClass( className, state )

    • className
      类型:String
      一个或多个类名(用空格隔开),针对匹配集合中的每个元素,切换它们。
    • state
      类型:Boolean
      一个布尔值(并不仅有true或false)值,用来确定要添加类还是删除类。
  • 增补版本:1.4.toggleClass( function [, state ] )

    • function
      类型:Function( Integer index, String className, Boolean state ) => String
      一个函数,返回要在匹配的集合的每个元素的class特性中切换的类名。接受元素在集合中的索引、旧的类值,以及状态,作为参数。
    • state
      类型:Boolean
      一个布尔值,用来确定要添加类还是删除类。

此方法取用了一个或多个类名作为参数。在第一个版本中,如果匹配的元素集合中某元素已经具有该类,则会删除该类;如果某元素不具有该类,则会添加该类。例如,我们可以对一个<div>应用.toggleClass()

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>

对同一个<div>应用.toggleClass( "bounce spin" ),会在<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,则切换<div class="foo">元素的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-1.10.2.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" ).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-1.10.2.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.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-1.10.2.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 ] )返回类型:jQueryversion deprecated: 3.0

描述:

This signature (only!) is deprecated as of jQuery 3.0.