天天看點

JQuery屬性與樣式——樣式操作.css()和元素資料的存儲.data()

   樣式操作.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

繼續閱讀