.addClass()

.addClass( className )返回类型:jQuery

描述:对匹配元素的集合中的每个元素添加指定的样式类。

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

    • className
      类型:String
      一个或多个空格隔开的类,要被添加到每个匹配元素的class特性。
  • 增补版本:1.4.addClass( function )

    • function
      类型:Function( Integer index, String currentClassName ) => String
      一个函数,返回一个或多个空格隔开的类名称,要被添加到已有的类名。检索集合中的索引位置,以及已有的类名,作为参数。在此函数内部,this指的是集合中的当前元素。

重点是记住此方法并不替换一个类。它仅仅是添加类,把它追加到可能已经赋给此元素的类名后面。

在jQuery v1.12/2.2以前,.addClass()方法操纵选中的元素的className属性,而不是class特性。一旦此属性被改变,就要浏览器相应地更改特性。此行为的一个潜在问题是此方法只对利用HTML DOM语义的文档起作用,对纯XML文档不起作用。

自从jQuery 1.12/2.2,此行为变成增进对XML文档的支持,包括SVG文档。从那版本开始,改用class特性了。从而,.addClass()可以用于XML文档或SVG文档了。

可以对匹配的元素集合一次性添加不止一个类,用空格隔开,如下所示:

1
$( "p" ).addClass( "myClass yourClass" );

此方法通常与.removeClass()配合使用以切换元素的类,从一个到另一个,如下所示:

1
$( "p" ).removeClass( "myClass noClass" ).addClass( "yourClass" );

在此,将从所有的段落删除myClass类和noClass类,与此同时添加yourClass类。

自从jQuery 1.4以来,.addClass()方法的参数可以接受一个函数。

1
2
3
$( "ul li" ).addClass(function( index ) {
return "item-" + index;
});

给定一个带有两个<li>元素的无序列表,此示例把类"item-0"添加到第一个<li>,把类"item-1"添加到第二个<li>

示例:

把类"selected"添加给匹配的元素。

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
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>addClass demo</title>
<style>
p {
margin: 8px;
font-size: 16px;
}
.selected {
color: blue;
}
.highlight {
background: yellow;
}
</style>
<script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
<p>Hello</p>
<p>and</p>
<p>Goodbye</p>
<script>
$( "p" ).last().addClass( "selected" );
</script>
</body>
</html>

演示:

把类"selected"和"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
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>addClass demo</title>
<style>
p {
margin: 8px;
font-size: 16px;
}
.selected {
color: red;
}
.highlight {
background: yellow;
}
</style>
<script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
<p>Hello</p>
<p>and</p>
<p>Goodbye</p>
<script>
$( "p:last" ).addClass( "selected highlight" );
</script>
</body>
</html>

演示:

传递一个函数给.addClass(),把类"green"添加给一个已经具有"red"类的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
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>addClass demo</title>
<style>
div {
background: white;
}
.red {
background: red;
}
.red.green {
background: green;
}
</style>
<script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
<div>This div should be white</div>
<div class="red">This div will be green because it now has the "green" and "red" classes.
It would be red if the addClass function failed.</div>
<div>This div should be white</div>
<p>There are zero green divs</p>
<script>
$( "div" ).addClass(function( index, currentClass ) {
var addedClass;
if ( currentClass === "red" ) {
addedClass = "green";
$( "p" ).text( "There is one green div" );
}
return addedClass;
});
</script>
</body>
</html>

演示: