樣式操作.css()和元素資料的存儲.data()
1 .css()方法用于擷取元素樣式屬性的計算值或者設定元素的css屬性
2 .css()擷取元素樣式屬性的計算值的2種方法
.css(propertyName)擷取比對元素集合中的第一個元素的樣式屬性的計算值
.css(propertyNames)傳遞一組數組,傳回一個對象結果
3 .css()設定元素的css屬性的3種方法
.css(propertyName,value)設定css
.css(propertyName,function)可以傳入一個回調函數,傳回取到對應的值進行處理
.css(properties)可以傳一個對象,同時設定多個樣式
4 浏覽器屬性擷取方式不同,在擷取某些值的時候都JQuery采用統一的處理,比如顔色采用RBG,尺寸采用px
5 .css()方法支援駝峰寫法與大小混搭的寫法,内部做了容錯的處理
6 當一個數隻被作為值(value)的時候,會将其轉換為一個字元串,并添在字元串的結尾處添加px,如.css("width",50})與.css("width","50px"})一樣
7 .css()與.assClass()的差別
7.1 可維護性
.assClass()的本質是通過定義個class類的樣式規則,給元素添加一個或多個類
.css()是通過JavaScript大量代碼進行改變元素的樣式
7.2 靈活性
通過.assClass()可以批量的給相同的元素設定統一的規則,變動起來比較友善,
可以統一修改删除
.css()需要指定每一個元素一一的修改,日後維護也就要一一的修改,比較麻煩
.css()可以很容易動态的去改變一個樣式的屬性,不需要再去繁瑣的定義個class類的規則
7.3 樣式值
.assClass()本質隻是針對class的類的增加删除,不能擷取到指定樣式的屬性的值
.css()可以擷取到指定的樣式值
7.4 樣式的優先級
css的樣式是有優先級的,當外部樣式、内部樣式和内聯樣式同一樣式規則同時應用于同一個元素的時候,優先級如:内聯樣式>内部樣式>外部樣式
.assClass()是通過增加class名的方式,樣式在外部檔案或者内部樣式中先定義好的,需要的時候再附加到元素上
通過.css()處理的是内聯樣式,直接通過元素的style屬性附加到元素上的
通過.css()設定的樣式屬性優先級要高于.addClass
8 一般靜态的結構都确定了布局的規則,可以用.addClass()方法增加統一的類規則,動态的HTML結構在不确定規則或者經常變化的情況下一般考慮用.css()
9 在HTML5中data屬性進行資料預設或存儲,在不支援HTML5的浏覽器中用.data()方法
10 如:用data屬性
JQuery.data(element,key,value)//靜态接口,存資料
JQuery.data(element,key,)//靜态接口,取資料
.data(key,value)//執行個體接口,存資料
.data(key)//執行個體接口,存資料
2個方法在使用上存取都是同一個接口,傳遞元素,鍵值資料
用.data()方法
JQuery.removeData(element[,name])
.removeData([name])
2個對應的删除接口,使用上與data一緻,一個是增加一個是删除
11 例子
<body>
<h2>jQuery.data()靜态方法</h2>
<div class="left">
<div class="aaron">
<p>點選看結果</p>
<p>jQuery.data</p>
</div>
<div><span></span></div>
</div>
<h2>.data()執行個體方法</h2>
<div class="right">
<p>.data</p>
<script type="text/javascript">
$('.left').click(function() {
var ele = $(this);
//通過$.data方式設定資料
$.data(ele, "a", "data test")
$.data(ele, "b", {
name : "慕課網"
})
//通過$.data方式取出資料
var reset = $.data(ele, "a") + "</br>" + $.data(ele, "b").name
ele.find('span').append(reset)
})
</script>
<script type="text/javascript">
$('.right').click(function() {
//通過.data方式設定資料
ele.data("a", "data test")
ele.data("b", {
name: "慕課網"
})
//通過.data方式取出資料
var reset = ele.data("a") + "</br>" + ele.data("b").name
</body>
本文轉自 拉考的考拉 51CTO部落格,原文連結:http://blog.51cto.com/lakaodekaola/1982846