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

< div id="user" data-id="123456" data-name="伟哥哥" data-data-of-birth>测试< /div >

使用attribute方法存取 data-* 自定义属性的值

使用getAttribute获取data-属性

        var user = document.getElementById("user");
var userName = user.getAttribute("data-name");//userName = "伟哥哥"
var userId = user.getAttribute("data-id");//userId = "123465"

使用setAttribute设置data-属性

        user.setAttribute("data-url","http://www.cnblogs.com/wei-hj/");

此方法能在所有的现代浏览器中正常工作,但它不是HTML 5 的自定义 data-属性被使用目的,不然和我们以前使用的自定义属性就没有什么区别了。

dataset属性存取data-*自定义属性的值

通过访问一个元素的 dataset 属性来存取 data-* 自定义属性的值, dataset 属性是HTML5 JavaScript API的一部分,用来返回一个所有选择元素data- 属性的DOMStringMap对象。

使用这种方法时,不是使用完整的属性名,如 data-uid 来存取数据,应该去掉data- 前缀。

特别注意:data- 属性名如果包含了连字符,例如:data-date-of-birth,连字符将被去掉,并转换为驼峰式的命名,前面的属性名转换后应该是: dateOfBirth 。

        var el = document.querySelector("#user");
console.log(el.id);//user
console.log(el.dataset);//DOMStringMap {id: "123456", name: "伟哥哥", dataOfBirth: ""}
console.log(el.dataset.id);//123456
console.log(el.dataset.name);//伟哥哥
console.log(el.dataset.dataOfBirth);//没有输出东西,为空 el.dataset.dataOfBirth = "2017-01-01";//设置data-data-of-birth的值
console.log(el.dataset.dataOfBirth);//2017-01-01 console.log("dataOther" in el.dataset);//false,判断是否有data-other属性在el中
el.dataset.dataOther = "other";//设置dataOther的值
console.log("dataOther" in el.dataset);//true,判断是否有data-other的值 console.log("dataName" in el.dataset);//???????不明白为什么总是显示false,有待考究 delete el.dataset.dataOther;//删除的话会变成false
console.log("dataOther" in el.dataset);//false el.dataset.dataOther = null ;//如果只是设置为空的话,依旧会返回true
console.log("dataOther" in el.dataset);//true
新的 dataset 属性只有在Chrome 8+ Firefox(Gecko) 6.0+ Internet Explorer 11+ Opera 11.10+ Safari 6+浏览器中实现,所以在此期间最好用的getAttribute和setAttribute来操作。

关于data-属性选择器

实际开发过程中,可以根据自定义的data-属性选择相关的元素,例如使用querySelectorAll选择元素:

    //选择所有包含"data-shuai"属性的元素
document.querySelectorAll("[data-shuai]"); 选择所有包含"data-man-weigege"属性值为"shuai"的元素
document.querySelectorAll("[data-man-weigege]='shuai'");

通过data-属性对相应的元素设置CSS样式,例如:

        <style type="text/css">
.user{
width:100px;
height:200px;
}
.user[data-name="weigege"]{
color:red;
}
.user[data-name="weigege2"]{
color:blue;
}
</style>
<div class="user" data-id="123456" data-name="weigege">哈哈</div>
<div class="user" data-id="654321" data-name="weigege2">嘻嘻</div>

自定义data-*的更多相关文章

  1. 自定义Data Service Providers

    自定义Data Service Providers 作者:AlexJ 翻译:谈少民 原文链接:http://blogs.msdn.com/b/alexj/archive/2010/01/07/data ...

  2. 《从0到1学习Flink》—— 如何自定义 Data Source ?

    前言 在 <从0到1学习Flink>-- Data Source 介绍 文章中,我给大家介绍了 Flink Data Source 以及简短的介绍了一下自定义 Data Source,这篇 ...

  3. 《从0到1学习Flink》—— 如何自定义 Data Sink ?

    前言 前篇文章 <从0到1学习Flink>-- Data Sink 介绍 介绍了 Flink Data Sink,也介绍了 Flink 自带的 Sink,那么如何自定义自己的 Sink 呢 ...

  4. Flink 从 0 到 1 学习 —— 如何自定义 Data Sink ?

    前言 前篇文章 <从0到1学习Flink>-- Data Sink 介绍 介绍了 Flink Data Sink,也介绍了 Flink 自带的 Sink,那么如何自定义自己的 Sink 呢 ...

  5. Flink 从 0 到 1 学习 —— 如何自定义 Data Source ?

    前言 在 <从0到1学习Flink>-- Data Source 介绍 文章中,我给大家介绍了 Flink Data Source 以及简短的介绍了一下自定义 Data Source,这篇 ...

  6. js(jQuery)获取自定义data属性的值

    有时候因为需要在标签上设置自定义data属性值, <div class="col-sm-6 col-md-4" id="get_id" data-c_id ...

  7. js取自定义data属性

    //20170329 原本以为只能attr或者prop来获取属性,但是今天看别人的代码他自定义了一个属性,却取不到他的属性值,我自己在本地又可以取到,难道是phtml的原因,于是我到网上查找,发现了一 ...

  8. 【翻译】详解HTML5 自定义 Data 属性

    原标题:HTML5 Custom Data Attributes (data-*) 你是否曾经使用 class 或 rel 来保存任意的元数据,只为了使你的JavaScript更简单?如果你回答是的, ...

  9. 获取自定义data的几种属性

    //获取data属性的几种方法 var id = this.getAttribute('data-id'); var id = $(this).attr('data-id'); var id = $( ...

  10. 创建数据表,自定义data element, field等。

    参考:https://wenku.baidu.com/view/253ddbfaa5e9856a561260da.html 一:创建域. 使用T-CODE 11 搜索 数据操作系统. 选择domain ...

随机推荐

  1. iOS-贝塞尔连续曲线

    一个曲线 UIColor *color = [UIColor redColor]; [color set]; UIBezierPath *path = [UIBezierPath bezierPath ...

  2. POJ 2656

    #include<iostream> #include<stdio.h> using namespace std; int main() { //freopen("a ...

  3. python爬虫----XPath

    1.知道本节点元素,如何定位到兄弟元素 详情见博客 XML代码见下 bt1在文档中只出现一次,所以很容易获取到bt1中内容,那怎么根据<td class='bt1'>来获取bt2中的内容 ...

  4. 【原创】实现一个简单的邮件服务API

    经常在公司写一些内部小程序需要用到发邮件的功能,于是决定写一个邮件服务. 实现思路:以URL形式提供一个RESTful API 给客户端,客户端通过post请求把json格式的邮件信息发送到服务端,服 ...

  5. date命令使用文档.txt

    date命令的帮助信息 [root@localhost source]# date --help用法:date [选项]... [+格式] 或:date [-u|--utc|--universal] ...

  6. Python做int()强制类型转换的时候,小数是如何取舍的?

    白月黑羽今天给大家分享一个冷知识:) int()强制类型转换小数是如何取舍的? 使用 int() 将小数转换为整数,小数取整会采用比较暴力的截断方式,即小数点后面的会被强制舍去,向下取整. 例如:5. ...

  7. JAVA中 XML与数据库互转 学习笔记三

    要求 必备知识 JAVA基础知识,XML基础知识,数据库的基本操作. 开发环境 MyEclipse10/MySql5.5 资料下载 源码下载   数据库在数据查询,修改,保存,安全等方面与其他数据处理 ...

  8. Python爬取简书主页信息

    主要学习如何通过抓包工具分析简书的Ajax加载,有时间再写一个Multithread proxy spider提升效率. 1. 关键点: 使用单线程爬取,未登录,爬取简书主页Ajax加载的内容.主要有 ...

  9. SSM整合——spring4.*配置案例

    导入spring4.* 相关的jar包和依赖包即可 1.web.xml <?xml version="1.0" encoding="UTF-8"?> ...

  10. Java队列——线程池创建的例子

    线程池为线程生命周期开销问题和资源不足问题提供了解决方案.通过对多个任务重用线程,线程创建的开销被分摊到了多个任务上.其好处是,因为在请求到达时线程已经存在,所以无意中也消除了线程创建所带来的延迟.这 ...