自定义data-*
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-*的更多相关文章
- 自定义Data Service Providers
自定义Data Service Providers 作者:AlexJ 翻译:谈少民 原文链接:http://blogs.msdn.com/b/alexj/archive/2010/01/07/data ...
- 《从0到1学习Flink》—— 如何自定义 Data Source ?
前言 在 <从0到1学习Flink>-- Data Source 介绍 文章中,我给大家介绍了 Flink Data Source 以及简短的介绍了一下自定义 Data Source,这篇 ...
- 《从0到1学习Flink》—— 如何自定义 Data Sink ?
前言 前篇文章 <从0到1学习Flink>-- Data Sink 介绍 介绍了 Flink Data Sink,也介绍了 Flink 自带的 Sink,那么如何自定义自己的 Sink 呢 ...
- Flink 从 0 到 1 学习 —— 如何自定义 Data Sink ?
前言 前篇文章 <从0到1学习Flink>-- Data Sink 介绍 介绍了 Flink Data Sink,也介绍了 Flink 自带的 Sink,那么如何自定义自己的 Sink 呢 ...
- Flink 从 0 到 1 学习 —— 如何自定义 Data Source ?
前言 在 <从0到1学习Flink>-- Data Source 介绍 文章中,我给大家介绍了 Flink Data Source 以及简短的介绍了一下自定义 Data Source,这篇 ...
- js(jQuery)获取自定义data属性的值
有时候因为需要在标签上设置自定义data属性值, <div class="col-sm-6 col-md-4" id="get_id" data-c_id ...
- js取自定义data属性
//20170329 原本以为只能attr或者prop来获取属性,但是今天看别人的代码他自定义了一个属性,却取不到他的属性值,我自己在本地又可以取到,难道是phtml的原因,于是我到网上查找,发现了一 ...
- 【翻译】详解HTML5 自定义 Data 属性
原标题:HTML5 Custom Data Attributes (data-*) 你是否曾经使用 class 或 rel 来保存任意的元数据,只为了使你的JavaScript更简单?如果你回答是的, ...
- 获取自定义data的几种属性
//获取data属性的几种方法 var id = this.getAttribute('data-id'); var id = $(this).attr('data-id'); var id = $( ...
- 创建数据表,自定义data element, field等。
参考:https://wenku.baidu.com/view/253ddbfaa5e9856a561260da.html 一:创建域. 使用T-CODE 11 搜索 数据操作系统. 选择domain ...
随机推荐
- abp 使用 hangfire结合mysql
abp 官方使用的hangfire 默认使用的是sqlserver的存储 需要引入支持mysql的类库 我这边使用的是Hangfire.MySql.Core 直接用nuget安装即可 首先按照官方文档 ...
- SpringMVC初探-HelloWorld
MVC的概念 MVC是一种设计模式,即Model--View-Controller,模型--视图--控制器 Model(模型)表示应用程序核心(比如数据库记录列表). View(视图)显示数据(数据库 ...
- 提取PPT中的原始图片
写Word的不如做Excel 的,做Excel不如做PPT的,写代码的不如做PPT. 为了在电子邮件中上传PPT,其中的图片大都经过压缩,以便缩小PPT的体积.那么如何将PPT中的图片,还原成没有经过 ...
- [Umbraco] Data Types介绍
Data Types是在建立document type时需要用到的,系统自带了很多用于开发的类型,如常用的下拉列表dropdown, textbox, radiobox, checkbox以及上传,h ...
- ajex 相关参数
1.url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. 2.type: 要求为String类型的参数,请求方式(post或get)默认为get.注意其他http请求方法,例如 ...
- Redis学习系列六ZSet(有序列表)及Redis数据结构的过期
一.简介 ZSet可以说是Redis中最有趣的数据结构了,因为他兼具了Hash集合和Set的双重特性,也是用的最多的,保证了value值的唯一性的同时,,同时又保证了高性能,最主要的是还可以给每个Va ...
- 链表的反转、合并(不借助额外list数组)
链表的基本操作:线性表 (单链表.循环链表-python实现) 反转链表: # -*- coding:utf-8 -*- class ListNode: def __init__(self, x): ...
- getFields和getDeclaredFields
getFields()获得某个类的所有的公共(public)的字段,包括父类. getDeclaredFields()获得某个类的所有申明的字段,即包括public.private和proteced, ...
- [Java初探外篇]__关于时间复杂度与空间复杂度
前言 我们在前面的排序算法的学习中了解到了,排序算法的分类,效率的比较所使用到的判断标准,就包括时间复杂度和空间复杂度,当时因为这两个定义还是比较难以理解的,所以决定单独开一篇文章,记录一下学习的过程 ...
- 安装Windows 8.1过程中出现的各种问题(无损从MBR转GPT磁盘、不能定位已有分区)
这个周末就安装了个系统,本以为一个小时就能搞定,没想到花费了将近一天. 我的机子是6G内存.500G硬盘,原装系统是Windows 7,现在想换成Windows 8.1,于是下载了64位的Window ...