HTML 5 的data-* 自定义属性
HTML 5 增加了一项新功能是 自定义数据属性 ,也就是 data-* 自定义属性。在HTML5中我们可以使用以 data- 为前缀来设置我们需要的自定义属性,来进行一些数据的存放。当然高级浏览器下可通过脚本进行定义和数据存取。在项目实践中非常有用。
例如:
html 代码:
- <div id = "user" data-uid = "12345" data-uname = "愚人码头" > </div>
使用attribute方法存取 data-* 自定义属性的值
使用attributes方法存取 data-* 自定义属性的值非常方便:
javascript 代码:
- // 使用getAttribute获取 data- 属性
- var user = document . getElementById ( 'user' ) ;
- var userName = plant . getAttribute ( 'data-uname' ) ; // userName = '愚人码头'
- var userId = plant . getAttribute ( 'data-uid' ) ; // userId = '12345'
- // 使用setAttribute设置 data- 属性
- user . setAttribute ( 'data-site' , 'http://www.css88.com' ) ;
此方法能在所有的现代浏览器中正常工作,但它不是HTML 5 的自定义 data-*属性被使用目的,不然和我们以前使用的自定义属性就没有什么区别了,例如:
html 代码:
- <div id = "user" uid = "12345" uname = "愚人码头" > </div>
- <script>
- // 使用getAttribute获取 data- 属性
- var user = document . getElementById ( 'user' ) ;
- var userName = plant . getAttribute ( 'uname' ) ; // userName = '愚人码头'
- var userId = plant . getAttribute ( 'uid' ) ; // userId = '12345'
- // 使用setAttribute设置 data- 属性
- user . setAttribute ( 'site' , 'http://www.css88.com' ) ;
- </script>
这种“原始”的自定义属性和上面 data-* 自定义属性没什么区别,知识属性名不一样。
dataset属性存取data-*自定义属性的值
这种方式通过访问一个元素的 dataset 属性来存取 data-* 自定义属性的值。这个 dataset 属性是HTML5 JavaScript API的一部分,用来返回一个所有选择元素 data- 属性的DOMStringMap对象。
使用这种方法时,不是使用完整的属性名,如 data-uid 来存取数据,应该去掉data- 前缀。
还有一点特别注意的是: data- 属性名如果包含了连字符,例如:data-date-of-birth ,连字符将被去掉,并转换为驼峰式的命名,前面的属性名转换后应该是: dateOfBirth 。
html 代码:
- <div id="user" data-id="1234567890" data-name="愚人码头" data-date-of-birth>码头</div>
- <script type="text/javascript">
- var el = document.querySelector('#user');
- console.log(el.id); // 'user'
- console.log(el.dataset);//一个DOMStringMap
- console.log(el.dataset.id); // '1234567890'
- console.log(el.dataset.name); // '愚人码头'
- console.log(el.dataset.dateOfBirth); // ''
- el.dataset.dateOfBirth = '1985-01-05'; // 设置data-date-of-birth的值.
- console.log('someDataAttr' in el.dataset);//false
- el.dataset.someDataAttr = 'mydata';
- console.log('someDataAttr' in el.dataset);//true
- </script>
如果你想删掉一个 data-属性 ,可以这么做: delete el . dataset . id ; 或者 el .dataset . id = null ; 。
看起来很美,哈哈,但是不幸的是,新的 dataset 属性只有在Chrome 8+ Firefox(Gecko) 6.0+ Internet Explorer 11+ Opera 11.10+ Safari 6+浏览器中实现,所以在此期间最好用的getAttribute和setAttribute来操作。
关于data-属性选择器
在实际开发时,您可能会发现它很有用,你可以根据自定义的 data- 属性选择相关的元素。例如使用querySelectorAll选择元素:
javascript 代码:
- // 选择所有包含 'data-flowering' 属性的元素
- document . querySelectorAll ( '[data-flowering]' ) ;
- // 选择所有包含 'data-text-colour' 属性值为red的元素
- document . querySelectorAll ( '[data-text-colour="red"]' ) ;
同样的我们也可以通过 data- 属性值对相应的元素设置CSS样式,例如下面这个例子:
html 代码:
- <style type ="text/css">
- .user {
- width : 256px ;
- height : 200px ;
- }
- .user[data-name='feiwen'] {
- color : brown
- }
- .user[data-name='css'] {
- color : red
- }
- </style>
- <div class = "user" data-id = "123" data-name = "feiwen" > 1 </div>
- <div class = "user" data-id = "124" data-name = "css" > 码头 </div>
更多参阅:
http://ejohn.org/blog/html-5-data-attributes/
demo:
HTML 5 的data-* 自定义属性的更多相关文章
- data自定义属性获取方法和设置
<!--原生获取方法--> <div data-id="id=1"></div> <script> //js原生获取方法 var i ...
- 关于data自定义属性
新的HTML5标准允许你在普通的元素标签里,嵌入类似data-*的属性,来实现一些简单数据的存取.它的数量不受限制,并且也能由JavaScript动态修改,也支持CSS选择器进行样式设置.这使得dat ...
- jquery中data()和js中dataset属性的区别
INTRO html的标签属性data-允许用户自定义属性.原生javascript和jquery分别定义了dataset属性和data()方法对标签中的data属性进行操作. 取值: 如我们定义这样 ...
- data-*设置自定义属性注意事项一
本人才疏学浅,偶遇一个data自定义属性应当注意的小问题,随笔记下. 1.看下面代码:首先在a标签设置自定义两个属性 <a class="btn" href="ja ...
- Dom新find
1.HTML标签和属性是不区分大小写的,但JS是区分大小写的:所以(1)HTML专有的接口的属性应该以小写字母开头,如果属性名由多个单词构成,第二个及接下来的每个单词的首字母都要大写.(2)有些HTM ...
- 前端笔记之JavaScript(七)深入函数&DOM那点事
一.函数补充 1.1 arguments类数组对象 arguments 是一个对应于传递给函数的参数的类数组对象. 在函数中,使用特殊对象 arguments,开发者无需明确指出参数名,就能访问它们. ...
- 微信小程序基础语法总结
本文介绍微信小程序语法 配置文件 app.json的配置(全局) { // 用来配置页面的路径 "pages":[ "pages/index/index", / ...
- android -------- Data Binding的使用 ( 六) 自定义属性
今天来说说DataBinding在自定义属性的使用 默认的android命名空间下,我们会发现并不是所有的属性都能直接通过data binding进行设置,比如margin,padding,还有自定义 ...
- JQUERY获取html标签自定义属性值或data值
//获取属性值 1 <div id="text" value="黑哒哒的盟友"><div> jQuery取值: $("#tex ...
- 关于使用data()获取自定义属性出现undefined的说明
这应该是这个函数的一个bug,没有考虑到驼峰式的写法,当我写成驼峰式,即是有大小写的变量时就会出现没有定义的情况. 今天写个交互,需要用到自定义属性,因为这个自定义属性是当作字段用的,就直接用了字段名 ...
随机推荐
- Search Ads 已经在美国区上线 - iOS 移动开发周报(46)
Search Ads 已经在美国区上线 - iOS 移动开发周报(46) 新闻 Search Ads 上线 苹果的 AppStore 搜索广告终于 正式上线了 https://developer.ap ...
- hdu杭电1671 / poj3630 字典树
传送门 题意:输入n串数字 找出是否有存在串的前缀与另一个串相同 如果存在 输出NO否则输出YES 思路:用字典树解决 标记字典树总串的结尾 查找出一个串内部是否有被标记的节点 如果有那么说明存在前缀 ...
- android中的Dialog
一.Dialog概述 二.使用系统自带的Dialog 1.新建Builder AlertDialog.Builder builder = new AlertDialog.Builder(StoryAc ...
- Winform程序以Icon的形式显示在任务栏右下角
Form最小化是指整个Form都缩小到任务栏上,但是是以Form的标题栏形式显示的, 若是想让Form以Icon的形式显示在任务栏右下角,则需要给Form添加一个NotifyIcon控件, 在使窗体最 ...
- JS开发HTML5游戏《神奇的六边形》(二)
近期出现一款魔性的消除类HTML5游戏<神奇的六边形>,今天我们一起来看看如何通过开源免费的青瓷引擎(www.zuoyouxi.com)来实现这款游戏. (点击图片可进入游戏体验) 因内容 ...
- Aspose Cells 添加数据验证(动态下拉列表验证)
参考 :http://www.componentcn.com/kongjianjishu/kongjianjishu/2015-06-04/2781.html Aspose Cells是一款操作和处理 ...
- jenkins使用deploy-plugin自动构建部署war包
jenkins+ant+maven+tomcat 1安装 jenkins 使用yum安装的 # 下载库 wget -O /etc/yum.repos.d/jenkins.repo http://pkg ...
- result结果集
结果集(ResultSet)是数据中查询结果返回的一种对象,可以说结果集是一个存储查询结果的对象,但是结果集并不仅仅具有存储的功能,他同时还具有操纵数据的功能,可能完成对数据的更新等. 结果集读取数据 ...
- 【转】Eclipse 常用快捷键 (动画讲解)
Eclipse有强大的编辑功能, 工欲善其事,必先利其器, 掌握Eclipse快捷键,可以大大提高工作效率. 小坦克我花了一整天时间, 精选了一些常用的快捷键操作,并且精心录制了动画, 让你一看就会. ...
- 执行带参数的sql字符串
--要传入的参数 declare @Rv NVARCHAR(40) --要执行的带参数的sql字符串 declare @sql nvarchar(max) set @sql='select * fr ...