1. 程式人生 > >微信小程序——data-*自定義屬性

微信小程序——data-*自定義屬性

要去 選擇 pan ava ack UNC 問題 結構 區別

在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‘;

這樣就為div添加了一個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樣式表為div添加了一些樣式,看看效果

讀取的時候也是通過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);
        }

摘自https://www.cnblogs.com/dolphinX/p/3348458.html

微信小程序——data-*自定義屬性