<div id="test" data-age="24"> Click Here </div>
var test = document.getElementById('test'); test.dataset.my = 'Byron';
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); }
注意:javascript
咱们在添加或读取属性的时候须要去掉前缀data-*,像上面的例子咱们没有使用test.dataset.data-my = 'Byron';的形式。html
若是属性名称中还包含连字符(-),须要转成驼峰命名方式,但若是在CSS中使用选择器,咱们须要使用连字符格式html5
<div id="test" data-name="william" data-age="25" gender="male"></div>
上述元素几个 data 属性的获取分别为:java
var div = $('#test') console.log(div.data('name')) // 'william' console.log(div.data('age')) // 25 (数值) console.log(div.attr('gender')) // 'male'
和html5的api不一样的是,jQuery会尝试将字符串转换为一个JavaScript值(包括布尔值(booleans),数字(numbers),对象(objects),数组(arrays)和空(null))。
若是这样作不会改变数值的表示,那么该值将转换为一个数字(number)。
例如,“1E02”和“100.000”是等同于数字(数字值100),但将转换它们会改变他们的表示,因此他们被保留为字符串。字符串值“100”被转换为数字100。api
因此,想把一个对象设置到标签里,应该这么写数组
div.data('setObj', JSON.stringify({'name': 'william', 'age': 22}))
可是取的时候,只须要this
var obj = div.data('setObj') // {'name': 'william', 'age': 22} (object类型,不须要用 JSON.parse() 转换了)
data 相关的就写到这里,不详尽的地方你们能够本身尝试一下,很快就能够出来的。code