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 相关文章推荐
纯CSS实现预加载动画效果
Sep 06 HTML / CSS
基于css3 animate制作绚丽的动画效果
Nov 24 HTML / CSS
用css3写出气球样式的示例代码
Sep 11 HTML / CSS
使用CSS3实现input多选框自定义样式的方法示例
Jul 19 HTML / CSS
值得收藏的HTML5资源(学习html5的朋友可以收藏下)
Jul 20 HTML / CSS
HTML4和HTML5之间除了相似以外的10个主要不同
Dec 13 HTML / CSS
HTML5之HTML元素扩展(上)—新增加的元素及使用概述
Jan 31 HTML / CSS
HTML5 Canvas中使用用路径描画圆弧
Jan 01 HTML / CSS
详解HTML5中的picture元素响应式处理图片
Jan 03 HTML / CSS
canvas实现二维码和图片合成的示例代码
Aug 01 HTML / CSS
详解html5 postMessage解决跨域通信的问题
Aug 17 HTML / CSS
如何通过 CSS 写出火焰效果
Mar 24 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
Syphon 秘笈
2021/03/03 冲泡冲煮
开发大型 PHP 项目的方法
2007/01/02 PHP
CI(CodeIgniter)框架介绍
2014/06/09 PHP
ThinkPHP3.1基础知识快速入门
2014/06/19 PHP
Smarty3配置及入门语法
2017/02/22 PHP
php PDO判断连接是否可用的实现方法
2017/04/03 PHP
php使用lua+redis实现限流,计数器模式,令牌桶模式
2019/04/04 PHP
PHP手机号码及邮箱正则表达式实例解析
2020/07/11 PHP
javascript 尚未实现错误解决办法
2008/11/27 Javascript
IE和firefox浏览器的event事件兼容性汇总
2009/12/06 Javascript
Javascript 八进制转义字符(8进制)
2011/04/08 Javascript
JavaScript跨域方法汇总
2014/10/16 Javascript
JS实现简单路由器功能的方法
2015/05/27 Javascript
微信小程序 教程之事件
2016/10/18 Javascript
JS实现加载和读取XML文件的方法详解
2017/04/24 Javascript
Vue实现选择城市功能
2017/05/27 Javascript
Node使用Sequlize连接Mysql报错:Access denied for user ‘xxx’@‘localhost’
2018/01/03 Javascript
pace.js和NProgress.js两个加载进度插件的一点小总结
2018/01/31 Javascript
JS获取今天是本月第几周、本月共几周、本月有多少天、是今年的第几周、是今年的第几天的示例代码
2018/12/05 Javascript
jQuery访问json文件中数据的方法示例
2019/01/28 jQuery
jquery ajax 请求小技巧实例分析
2019/11/11 jQuery
浅谈vue 二级路由嵌套和二级路由高亮问题
2020/08/06 Javascript
[42:52]Optic vs Serenity 2018国际邀请赛淘汰赛BO3 第二场 8.22
2018/08/23 DOTA
[54:26]完美世界DOTA2联赛PWL S3 Forest vs Rebirth 第一场 12.10
2020/12/12 DOTA
[02:16]完美世界DOTA2联赛PWL S3 集锦第三期
2020/12/21 DOTA
python能否java成为主流语言吗
2020/06/22 Python
Python使用tkinter实现小时钟效果
2021/02/22 Python
法务专员岗位职责
2014/01/02 职场文书
暑期社会实践先进个人主要事迹
2014/05/22 职场文书
2014镇党委班子对照检查材料思想汇报
2014/09/23 职场文书
乡镇党的群众路线教育实践活动剖析材料
2014/10/09 职场文书
2014年数学教师工作总结
2014/12/03 职场文书
初中信息技术教学反思
2016/02/16 职场文书
承诺书应该怎么写?
2019/09/10 职场文书
python 中的@运算符使用
2021/05/26 Python
关于Python OS模块常用文件/目录函数详解
2021/07/01 Python