增加样式标签
JQuery中增加样式使用.addClass(className)方法
通过动态改变类名(class),可以让其修改元素呈现出不同的效果。在HTML结构中里,多个class以空格分隔,当一个节点(或称为一个标签)含有多个class时,DOM元素响应的className属性获取的不是class名称的数组,而是一个含有空格的字符串,这就使得多class操作变得很麻烦。同样的jQuery开发者也考虑到这种情况,增加了一个.addClass()方法,用于动态增加class类名
.addClass( className )方法简介:
1..addClass( className ) : 为每个匹配元素所要增加的一个或多个样式名
2..addClass( function(index, currentClass) ) : 这个函数返回一个或更多用空格隔开的要增加的样式名
注意:
.addClass()方法不会替换一个样式类名。它只是简单的添加一个样式类名到元素上
简单的举个栗子:在p元素增加一个newClass的样式,处理如下:
<p class="orgClass">
$("p").addClass("newClass")
那么p元素的class实际上是 class=”orgClass newClass”样式只会在原本的类上继续增加,通过空格分隔。
实练操作:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<title></title>
<style>
.left,
.right {
width: 300px;
height: 120px;
}
.left div,
.right div {
width: 100px;
height: 90px;
padding: 5px;
margin: 5px;
float: left;
border: 1px solid #ccc;
}
.newClass{
background: #bbffaa;
}
.imoocClass{
background: red;
}
</style>
<script src="http://libs.baidu.com/jquery/1.9.1/jquery.js"></script>
</head>
<body>
<h2>.addClss()方法</h2>
<div class="left">
<div class="aaron">
<p>newClass</p>
</div>
<div class="aaron">
<p>newClass</p>
</div>
</div>
<div class="right">
<div class="aa bb imooc">
<article>
<p>imoocClass</p>
</article>
</div>
<div class="bb cc imooc ">
<article>
<p>imoocClass</p>
</article>
</div>
</div>
<script type="text/javascript">
//class=left下div元素增加一个新的样式,增加背景颜色
$('.left div').addClass('newClass')
</script>
<script type="text/javascript">
//通过className(fucntion)方法
//这个函数返回一个或更多用空格隔开的要增加的样式名。
//接收index 参数表示元素在匹配集合中的索引位置和html 参数表示元素上原来的 HTML 内容
//找到所有的div,然后通过addClass设置颜色,根据返回的className的判断,
$("div").addClass(function(index,className) {
//找到类名中包含了imooc的元素
if(-1 !== className.indexOf('imooc')){
//this指向匹配元素集合中的当前元素
$(this).addClass('imoocClass')
}
});
</script>
</body>
</html>
稍稍提及一下indexOf的用法:indexOf()是用来查找字符串的。str.indexof(string)的意思是在str中查找存在string出现的位置,从0开始。如果不存在则返回-1。
删除样式标签
jQuery通过.addClass()方法可以很便捷的增加样式。如果需要样式之间的切换,同样jQuery提供了一个很方便的.removeClass(),它的作用是从匹配的元素中删除全部或者指定的class
.removeClass( )方法简介:
1..removeClass( [className ] ):每个匹配元素移除的一个或多个用空格隔开的样式名
2..removeClass( function(index, class) ) : 一个函数,返回一个或多个将要被移除的样式名
注意:
如果一个样式类名作为一个参数,只有这样式类会被从匹配的元素集合中删除 。 如果没有样式名作为参数,那么所有的样式类将被移除。
看例子:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<title></title>
<style>
.left,
.right {
width: 300px;
height: 120px;
}
.left div,
.right div {
width: 100px;
height: 90px;
padding: 5px;
margin: 5px;
float: left;
border: 1px solid #ccc;
}
.newClass{
background: #bbffaa;
}
.imoocClass{
background: red;
}
</style>
<script src="http://libs.baidu.com/jquery/1.9.1/jquery.js"></script>
</head>
<body>
<h2>.removeClass()方法</h2>
<div class="left">
<div class="aaron newClass">
<p>newClass</p>
</div>
<div class="aaron newClass">
<p>newClass</p>
</div>
</div>
<div class="right">
<div class="aa bb imoocClass">
<article>
<p>imoocClass</p>
</article>
</div>
<div>
<article>
<p>imoocClass</p>
</article>
</div>
</div>
<script type="text/javascript">
//class=left下div元素删除newClass样式
$('.left div').removeClass('newClass')
</script>
<script type="text/javascript">
//.removeClass() 方法允许我们指定一个函数作为参数,返回将要被删除的样式
$('.right > div:first').removeClass(function(index,className){
//className = aa bb imoocClass
//把div的className赋给下一个兄弟元素div上作为它的class
$(this).next().addClass(className)
//删除自己本身的imoocClass
return 'imoocClass'
})
</script>
</body>
</html>
执行结果: