自定义属性 data

HTML data-* 属性

jQuery的attr与prop提到过在IE9之前版本中如果使用property不当会造成内存泄露问题,而且关于Attribute和Property的区别也让人十分头痛,在HTML5中添加了data-*的方式来自定义属性,所谓data-*实际上上就是data-前缀加上自定义的属性名,使用这样的结构可以进行数据存放。使用data-*可以解决自定义属性混乱无管理的现状
绑定数据方式
  • 简单写法

    <div id="testDiv" data-cd="24">
        Click Here
    </div>
    
    var test = document.getElementById('test');
    console.log(test.dataset.cd) //24
    
  • 驼峰写法

    <div id="testDiv" data-cartCd="24">
        Click Here
    </div>
    
    var test = document.getElementById('test');
    console.log(test.dataset.cartcd) //24 注意是cartcd,小写
    
  • 复杂写法

    <div id="testDiv" data-cart-age="24">
        Click Here
    </div>
    
    
    var test = document.getElementById('test');
    console.log(test.dataset.cartAge) //24 注意写成驼峰
    
    getAttribute/setAttribute 与setdata的区别
    <div id="haha">哈哈</div>
    
    var a = document.getElementById('haha')
    			a.dataset.birthDate = '19890615';
    			a.setAttribute('age', 25);
    			a.setAttribute('data-sex', 'male');
    			
    			console.log(a.getAttribute('data-age')); //24
    			console.log(a.getAttribute('data-birth-date')); //19890516
    			console.log(a.dataset.age); //24
    			console.log(a.dataset.sex); //male
    
    <div id="haha" data-birth-date="19890615" age="25" data-sex="male">
    			hahah
    </div>
    

    a.dataset

    {
        birthDate: "19890615"
    	sex: "male"
    }
    

    这样我们可以看出,两者都把属性设置到了attribute上(废话,要不人家能叫自定义属性),也就是说getAttribute/setAttribute可以操作所有的dataset内容,dataset内容只是attribute的一个子集,特殊就特殊在命名上了,但是dataset内只有带有data-前缀的属性(没有age=25那个)。

    *那么为什么我们还要用data-呢,一个最大的好处是我们可以把所有自定义属性在dataset对象中统一管理,遍历啊神马的都哦很方便,而不至于零零散散了,所以用用还是不错的。

    兼容性
    • Internet Explorer 11+
    • Chrome 8+
    • Firefox 6.0+
    • Opera 11.10+
    • Safari 6+
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值