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. WebDriver高级应用实例(4)

    4.1操作web页面的滚动条 被测网页的网址: http://v.sogou.com Java语言版本的API实例代码 import org.testng.annotations.Test; impo ...

  2. 课程一(Neural Networks and Deep Learning),第一周(Introduction to Deep Learning)—— 0、学习目标

    1. Understand the major trends driving the rise of deep learning.2. Be able to explain how deep lear ...

  3. 编写一个c++工程

    c++接触的很少,之前也只是会编写一个简单的cpp文件,但一个工程的实现,往往不仅包括源文件(.cpp后缀文件)一般还有头文件(.h后缀文件)等.一个c++工程中只能有一个main函数,这个函数所在的 ...

  4. C++与C的联系与区别

    C++与C的联系: C++是在C语言的基础上开发的一种面向对象编程语言,应用广泛.C++支持多种编程范式 --面向对象编程.泛型编程和过程化编程. 其编程领域众广,常用于系统开发,引擎开发等应用领域, ...

  5. 站在巨人肩上的.NET Core 2.1

    .NET Core 1.0自发布两年以来,得到了开发者群体相当高地认可. 下图来自Stack overflow survey 2018的统计: .NET Core已经成为前五的主流框架工具,现今借鉴了 ...

  6. 怎么样imageview实现铺满全屏

    <ImageView android:layout_width="match_parent" android:layout_height="match_parent ...

  7. Gen对于break、continue与return的处理

    void tryItOut () {} void wrapItUp () {} void tryFinally() { for (int i = 0; i < 2; i++) { try { t ...

  8. 使用java调用fastDFS客户端进行静态资源文件上传

    一.背景 上篇博客我介绍了FastDFS的概念.原理以及安装步骤,这篇文章我们来聊一聊如何在java中使用FastDFSClient进行静态资源的上传. 二.使用步骤 1.开发环境 spring+sp ...

  9. Linux系统基础知识整理

    一.说明 本篇文章,我将结合自己的实践以及简介,来对linux系统做一个直观清晰的介绍,使得哪些刚接触Linux的小伙伴可以快速入门,也方便自己以后进行复习查阅. 二.基本知识整理 1.Linux文件 ...

  10. 详解C#泛型(二)

    一.自定义泛型方法(Generic Method),将类型参数用作参数列表或返回值的类型: void MyFunc<T>() //声明具有一个类型参数的泛型方法 { Type generi ...