亚洲最大看欧美片,亚洲图揄拍自拍另类图片,欧美精品v国产精品v呦,日本在线精品视频免费

  • 站長資訊網(wǎng)
    最全最豐富的資訊網(wǎng)站

    淺析HTML5中使用data-*來自定義屬性

    淺析HTML5中使用data-*來自定義屬性

    在jQuery的attr與prop提到過在IE9之前版本中如果使用property不當(dāng)會(huì)造成內(nèi)存泄露問題,而且關(guān)于Attribute和Property的區(qū)別也讓人十分頭痛,在HTML5中添加了data-*的方式來自定義屬性,所謂data-*實(shí)際上上就是data-前綴加上自定義的屬性名,使用這樣的結(jié)構(gòu)可以進(jìn)行數(shù)據(jù)存放。使用data-*可以解決自定義屬性混亂無管理的現(xiàn)狀。

    讀寫方式

    data-*有兩種設(shè)置方式,可以直接在HTML元素標(biāo)簽上書寫

    <div id="test" data-age="24">         Click Here     </div>

    其中的data-age就是一種自定義屬性,當(dāng)然我們也可以通過JavaScript來對(duì)其進(jìn)行操作,HTML5中元素都會(huì)有一個(gè)dataset的屬性,這是一個(gè)DOMStringMap類型的鍵值對(duì)集合

    var test = document.getElementById('test');         test.dataset.my = 'Byron';

    這樣就為p添加了一個(gè)data-my的自定義屬性,使用JavaScript操作dataset有兩個(gè)需要注意的地方

    1. 我們?cè)谔砑踊蜃x取屬性的時(shí)候需要去掉前綴data-*,像上面的例子我們沒有使用test.dataset.data-my = 'Byron';的形式。

    2. 如果屬性名稱中還包含連字符(-),需要轉(zhuǎn)成駝峰命名方式,但如果在CSS中使用選擇器,我們需要使用連字符格式

    為剛才代碼追加寫內(nèi)容

    <style type="text/css">         [data-birth-date]         {             background-color: #0f0;             width:100px;             margin:20px;         }     </style>
    test.dataset.birthDate = '19890615';

    這樣我們通過JavaScript設(shè)置了data-birth-date自定義屬性,在CSS樣式表為p添加了一些樣式,看看效果

    淺析HTML5中使用data-*來自定義屬性

    淺析HTML5中使用data-*來自定義屬性

    讀取的時(shí)候也是通過dataset對(duì)象,使用”.”來獲取屬性,同樣需要去掉data-前綴,連字符需要轉(zhuǎn)化為駝峰命名

    var test = document.getElementById('test');         test.dataset.my = 'Byron';         test.dataset.birthDate = '19890615';         test.onclick = function () {             alert(this.dataset.my + ' ' + this.dataset.age+' '+this.dataset.birthDate);         }

    淺析HTML5中使用data-*來自定義屬性

    getAttribute/setAttribute

    有些同學(xué)可能會(huì)問這和getAttribute/setAttribute除了命名有什么區(qū)別嗎,我們來看一下

    var test = document.getElementById('test');         test.dataset.birthDate = '19890615';         test.setAttribute('age', 25);         test.setAttribute('data-sex', 'male');          console.log(test.getAttribute('data-age')); //24         console.log(test.getAttribute('data-birth-date')); //19890516         console.log(test.dataset.age); //24         console.log(test.dataset.sex); //male

    淺析HTML5中使用data-*來自定義屬性

    淺析HTML5中使用data-*來自定義屬性

    這樣我們可以看出,兩者都把屬性設(shè)置到了attribute上(廢話,要不人家能叫自定義屬性),也就是說getAttribute/setAttribute可以操作所有的dataset內(nèi)容,dataset內(nèi)容只是attribute的一個(gè)子集,特殊就特殊在命名上了,但是dataset內(nèi)只有帶有data-前綴的屬性(沒有age=25那個(gè))。

    那么為什么我們還要用data-*呢,一個(gè)最大的好處是我們可以把所有自定義屬性在dataset對(duì)象中統(tǒng)一管理,遍歷啊神馬的都哦很方便,而不至于零零散散了,所以用用還是不錯(cuò)的。

    瀏覽器兼容性

    比較不好的消息就是data-*的瀏覽器兼容性情況十分不樂觀

    • Internet Explorer 11+
    • Chrome 8+
    • Firefox 6.0+
    • Opera 11.10+
    • Safari 6+

    其中IE11+簡直就是亮瞎小伙伴的眼,看來要想全面使用此屬性路漫漫其修遠(yuǎn)矣

    更多編程相關(guān)知識(shí),請(qǐng)?jiān)L問:編程學(xué)習(xí)網(wǎng)站??!

    贊(0)
    分享到: 更多 (0)
    網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)