自定义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 ...
随机推荐
- 文件分享系统(Django)
- 09-02 java 多态
多态的前提.多态的特点 /* 多态:同一个对象(事物),在不同时刻体现出来的不同状态. 举例: 猫是猫,猫是动物. 水(液体,固体,气态). 多态的前提: A:要有继承关系. B:要有方法重写. 其实 ...
- 在matlab中实现梯度下降法
梯度下降法的原理,本文不再描述,请参阅其它资料. 梯度下降法函数function [k ender]=steepest(f,x,e),需要三个参数f.x和e,其中f为目标函数,x为初始点,e为终止误差 ...
- 三:理解Page类的运行机制(例:在render方法中生成静态文件)
我这里只写几个常用的事件1.OnPreInit:此事件后将加载个性化信息和主题2.OnInit:初始化页面中服务器控件的默认值但控件的状态没有加载,没有创建控件树3.OnPreLoad:控件完成状态和 ...
- Vue笔记:在项目中使用 SCSS
背景概述 1. CSS预处理器 css预处理器定义了一种新的编程语言,编译后成正常的CSS文件.为CSS增加一些编程的特性,无需考虑浏览器的兼容问题,让CSS更加简洁,适应性更强,可读性更佳,更易于代 ...
- 系统启动时队列自动下单--ServletContextListener
package com.liying.pear.queue; import javax.servlet.ServletContextEvent; import javax.servlet.Servle ...
- es-04-mapping和setting的建立
mapping和setting, 使用java客户端比较难组装, 可以使用python或者scala 这儿直接在kibana中进行DSL创建 1, mapping 创建索引的时候, 可以事先对数据进行 ...
- linux上搭建ftp、vsftp, 解决访问ftp超时连接, 解决用户指定访问其根目录,解决ftp主动连接、被动连接的问题
linux上搭建ftp 重要 解决如何搭建ftp 解决用户指定访问其根目录 解决访问ftp超时连接 解决ftp主动连接.被动连接的问题 1.安装ftp ...
- 【nginx笔记】系统参数设置-使Nginx支持更多并发请求的TCP网络参数
首先,需要修改/etc/sysctl.conf来更改内核参数.例如,最常用的配置: fs.file-max = 999999 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tc ...
- .Net Core vs .Net Framework 如何为一个应用程序选择一个运行时(翻译)
.Net Core是下一件大事吗?我已经使用了一段时间了,我倾向认为它是.事实上,我们推测,在2018年,对这项技术熟练的开发人员将会有巨大的需求.但是它和.Net Framework的区别是什么?你 ...