增加樣式標籤
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>
執行結果: