html5的自定义data-*属性与jquery的data()方法的使用


Posted in HTML / CSS onJuly 02, 2014

人们总喜欢往HTML标签上添加自定义属性来存储和操作数据。但这样做的问题是,你不知道将来会不会有其它脚本把你的自定义属性给重置掉,此外,你这样做也会导致html语法上不符合Html规范,以及一些其它副作用。这就是为什么在HTML5规范里增加了一个自定义data属性,你可以拿它做很多有用的事情。

你可以去读一下HTML5的详细规范,但这个自定义data属性的用法非常的简单,就是你可以往HTML标签上添加任意以 "data-"开头的属性,这些属性页面上是不显示的,它不会影响到你的页面布局和风格,但它却是可读可写的。

下面的一个代码片段是一个有效的HTML5标记:

复制代码
代码如下:

<div id="awesome"
data-myid="3e4ae6c4e">Some awesome data</div>

可是,怎么来读取这些数据呢?你当然可以遍历页面元素来读取你想要的属性,但jquery已经内置了方法来操作这些属性。使用jQuery的.data()方法来访问这些"data-*" 属性。其中一个方法就是 .data(obj),这个方法是在 jQuery1.4.3版本后出现的,它能返回相应的data属性。

举个例子,你可以用下面的写法读取 data-myid属性值:

复制代码
代码如下:

var myid= jQuery("#awesome").data('myid');
console.log(myid);

你还可以在"data-*" 属性里使用json语法,例如,如果你写出下面的html:
复制代码
代码如下:

<div id="awesome-json" data-awesome='{"game":"on"}'></div>

你可以通过js直接访问这个数据,通过json的key值,你能得到相应的value:
复制代码
代码如下:

var gameStatus= jQuery("#awesome-json").data('awesome').game;
console.log(gameStatus);

你也可以通过.data(key,value)方法直接给"data-*" 属性赋值。一个重要的你要注意的事情是,这些"data-*" 属性应该和它所在的元素有一定的关联,不要把它当成存放任意东西的存储工具。

译者补充:尽管"data-*" 是HTML5才出现的属性,但jquery是通用的,所以,在非HTML5的页面或浏览器里,你仍然可以使用.data(obj)方法来操作"data-*" 数据。

HTML / CSS 相关文章推荐
Web页面中八种创建多列等高(等高列布局)的实现技术
Dec 24 HTML / CSS
详解CSS3中border-image的使用
Jul 18 HTML / CSS
HTML5离线缓存Manifest是什么
Mar 09 HTML / CSS
利用html5 canvas动态画饼状图的示例代码
Apr 02 HTML / CSS
HTML5的革新 结构之美
Jun 20 HTML / CSS
使用CSS实现弹性视频html5案例实践
Dec 26 HTML / CSS
用HTML5实现网站在windows8中贴靠的方法
Apr 21 HTML / CSS
HTML5 video 上传预览图片视频如何设置、预览视频某秒的海报帧
Aug 28 HTML / CSS
吃透移动端 Html5 响应式布局
Dec 16 HTML / CSS
关于webview适配H5上传照片或者视频文件的方法
Nov 04 HTML / CSS
html+css实现文字折叠特效实例
Jun 02 HTML / CSS
css height属性中的calc方法详解
Jun 03 HTML / CSS
Html5新特性用canvas标签画多条直线附效果截图
Jun 30 #HTML / CSS
HTML5通过调用canvas对象的getContext()方法来获取绘图环境
Jun 23 #HTML / CSS
HTML5在canvas中绘制复杂形状附效果截图
Jun 23 #HTML / CSS
HTML5 在canvas中绘制矩形附效果图
Jun 23 #HTML / CSS
HTML5如何为形状图上颜色怎么绘制具有颜色和透明度的矩形
Jun 23 #HTML / CSS
HTML5 在canvas中绘制文本附效果图
Jun 23 #HTML / CSS
HTML5使用drawImage()方法绘制图像
Jun 23 #HTML / CSS
You might like
合并ThinkPHP配置文件以消除代码冗余的实现方法
2014/07/22 PHP
基于PHP代码实现中奖概率算法可用于刮刮卡、大转盘等抽奖算法
2015/12/20 PHP
php使用PDO事务配合表格读取大量数据插入操作实现方法
2017/02/16 PHP
jquery中获得$.ajax()事件返回的值并添加事件的方法
2010/04/15 Javascript
js与jquery中获取当前鼠标的x、y坐标位置的代码
2011/05/23 Javascript
封装了一个js图片轮换效果的函数
2011/09/28 Javascript
Jquery AJAX POST与GET之间的区别
2013/11/14 Javascript
jquery实现表格中点击相应行变色功能效果【实例代码】
2016/05/09 Javascript
如何利用模板将HTML从JavaScript中抽离
2016/10/08 Javascript
AngularJS 使用ng-repeat报错 [ngRepeat:dupes]
2017/01/19 Javascript
JS表单数据验证的正则表达式(常用)
2017/02/18 Javascript
Ionic2调用本地SQlite实例
2017/04/22 Javascript
JavaScript设计模式之代理模式详解
2017/06/09 Javascript
详解AngularJS跨页面传值(ui-router)
2017/08/23 Javascript
VUE 全局变量的几种实现方式
2018/08/22 Javascript
如何为你的JavaScript代码日志着色详解
2019/04/08 Javascript
js仿京东放大镜效果
2020/08/09 Javascript
WINDOWS 同时安装 python2 python3 后 pip 错误的解决方法
2017/03/16 Python
Python使用pickle模块储存对象操作示例
2018/08/15 Python
Python产生一个数值范围内的不重复的随机数的实现方法
2019/08/21 Python
Python生成验证码、计算具体日期是一年中的第几天实例代码详解
2019/10/16 Python
Python中filter与lambda的结合使用详解
2019/12/24 Python
Django REST framwork的权限验证实例
2020/04/02 Python
Python自动登录QQ的实现示例
2020/08/28 Python
Scrapy 配置动态代理IP的实现
2020/09/28 Python
HTML5安全介绍之内容安全策略(CSP)简介
2012/07/10 HTML / CSS
html5+svg学习指南之SVG基础知识
2014/12/17 HTML / CSS
办公室保洁员岗位职责
2013/12/02 职场文书
化验室技术员岗位职责
2013/12/24 职场文书
道德模范先进事迹
2014/02/14 职场文书
党员民主评议个人总结
2014/10/20 职场文书
个人先进事迹材料范文
2014/12/29 职场文书
刑事附带民事诉讼答辩状
2015/05/22 职场文书
新郎父母婚礼答谢词
2015/09/29 职场文书
导游词之昭君岛
2020/01/17 职场文书
MySQL 开窗函数
2022/02/15 MySQL