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

这样就为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);
        }

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

这样我们可以看出,两者都把属性设置到了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+简直就是亮瞎小伙伴的眼,看来要想全面使用此属性路漫漫其修远矣

时间: 2024-11-01 15:30:53

HTML5 data-* 自定义属性的相关文章

html5 data属性的使用

html5 data属性定义和用法 <ul> <li data-animal-type="bird">Owl</li> <li data-animal-type="fish">Salmon</li> <li data-animal-type="spider">Tarantula</li> </ul> data-* 属性用于存储页面或应用程序的私有自定义

HTML5——Data Url生成

HTML5——Data Url生成 1 <!DOCTYPE html> 2 <html> 3 4 <head> 5 <meta charset="utf-8" /> 6 <title>如何用HTML5的FileReader生成Data Url</title> 7 8 <script type="text/javascript"> 9 function imageDataUrl(sou

HTML5的自定义属性的使用总结

以前我们需要自定义属性的时候一般是这样做的,在标签里面加上我们自己设置的一些属性: <div id="myDiv" user-defined-attribute="value">在标签里设置自定义属性</div> 然后获取里面的值是使用getAttribute来获取自定义属性里面的值: var myDiv = document.getElementById("myDiv"); var theValue = myDiv.ge

HTML5的自定义属性data-*详细介绍和JS操作实例

当然高级浏览器下可通过脚本进行定义和数据存取.在项目实践中非常有用. 例如: 复制代码 代码如下: <div id = "user" data-uid = "12345" data-uname = "脚本之家" > </div> 使用attribute方法存取 data-* 自定义属性的值 使用attributes方法存取 data-* 自定义属性的值非常方便: 复制代码 代码如下: // 使用getAttribute获取

关于data自定义属性

新的HTML5标准允许你在普通的元素标签里,嵌入类似data-*的属性,来实现一些简单数据的存取.它的数量不受限制,并且也能由JavaScript动态修改,也支持CSS选择器进行样式设置.这使得data属性特别灵活,也非常强大.有了这样的属性我们能够更加有序直观的进行数据预设或存储.下面介绍Html5 Dataset 存储的实际应用,以及包括jQuery在内的四种存取方式. <span id="music-latch" class="musique" data

Html5之自定义属性(data-,dataset)

定义H5为我们提供了以 "data-" 为前缀定义需要的属性即可设置自定义属性12<div id="box1" data-name="Musk"></div><div id="box2" data-full-name="Elon Musk"></div>获取使用H5自定义属性对象dataset来获取12345678let box1 = document.get

HTML5 自定义属性 data-* 和 jQuery.data 详解

新的HTML5标准允许你在普通的元素标签里,嵌入类似data-*的属性,来实现一些简单数据的存取.它的数量不受限制,并且也能由javascript动态修改,也支持CSS选择器进行样式设置.这使得data属性特别灵活,也非常强大.有了这样的属性我们能够更加有序直观的进行数据预设或存储.下面介绍HTML5 Dataset 存储的实际应用,以及包括jQuery在内的四种存取方式. HTML5 Dataset 存储的例子 为一个元素分配data属性存储数据,例如这是一个span元素,它的内容是一首音乐的

HTML 5:你必须知道的data属性

原文:All You Need to Know About the HTML5 Data Attribute 译文:你必须知道HTML 5 的Data属性 译者:dwqs HTML 5的Data属性可以让你给元素自定义数据.这篇文章就是思考怎么更好的使用Data属性. 介绍 HTML 5之前,我们必须依赖于class和rel属性来存储需要在网站中使用的数据片段,这种做法有时会在网站的外观和实用性之间产生冲突.而HTML 5 Data属性的存在就能很好满足需要. 随着网站自身的数据越来越多,一些特

使用data attributes

本文由本人翻译自:https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Using_data_attributes HTML5是具有扩展性的设计,它初衷是数据应与特定的元素相关联,但不需要任何定义.data-* 属性允许我们在标准内于HTML元素中存储额外的信息,而不许需要使用类似于 classList,标准外属性,DOM额外属性或是 setUserData之类的伎俩. HTML 语法 语法非常简单.所有在元素上以data-开头的属性为数

Html5 DataSet

新的HTML5标准允许你在普通的元素标签里,嵌入类似data-*的属性,来实现一些简单数据的存取.它的数量不受限制,并且也能由javascript动态修改,也支持CSS选择器进行样式设置.这使得data属性特别灵活,也非常强大.有了这样的属性我们能够更加有序直观的进行数据预设或存储.下面介绍HTML5 Dataset 存储的实际应用,以及包括jQuery在内的四种存取方式. HTML5 Dataset 存储的例子 为一个元素分配data属性存储数据,例如这是一个span元素,它的内容是一首音乐的