亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

HTML5中使用data-*來自定義屬性的方法

發布時間:2020-11-16 09:53:58 來源:億速云 閱讀:142 作者:小新 欄目:web開發

這篇文章主要介紹HTML5中使用data-*來自定義屬性的方法,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

在jQuery的attr與prop提到過在IE9之前版本中如果使用property不當會造成內存泄露問題,而且關于Attribute和Property的區別也讓人十分頭痛,在HTML5中添加了data-*的方式來自定義屬性,所謂data-*實際上上就是data-前綴加上自定義的屬性名,使用這樣的結構可以進行數據存放。使用data-*可以解決自定義屬性混亂無管理的現狀。

讀寫方式

data-*有兩種設置方式,可以直接在HTML元素標簽上書寫

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

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

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

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

1. 我們在添加或讀取屬性的時候需要去掉前綴data-*,像上面的例子我們沒有使用test.dataset.data-my = 'Byron';的形式。

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

為剛才代碼追加寫內容

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

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

HTML5中使用data-*來自定義屬性的方法

HTML5中使用data-*來自定義屬性的方法

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

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

有些同學可能會問這和getAttribute/setAttribute除了命名有什么區別嗎,我們來看一下

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-*來自定義屬性的方法

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

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

瀏覽器兼容性

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

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

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

以上是HTML5中使用data-*來自定義屬性的方法的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

楚雄市| 汪清县| 光泽县| 新昌县| 罗田县| 汶上县| 东宁县| 襄垣县| 吐鲁番市| 开江县| 武宁县| 土默特右旗| 恩施市| 涿鹿县| 郑州市| 延安市| 奉贤区| 庐江县| 陕西省| 万全县| 江华| 察雅县| 舒城县| 贺州市| 阳新县| 江油市| 博罗县| 新田县| 弋阳县| 连云港市| 瑞安市| 凉山| 隆回县| 丹凤县| 萨嘎县| 洪湖市| 鄂尔多斯市| 汤原县| 泰安市| 遂川县| 张掖市|