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 相关文章推荐
详解css3 mask遮罩实现一些特效
Oct 24 HTML / CSS
微信小程序实现可实时改变转速的css3旋转动画实例代码
Sep 11 HTML / CSS
CSS3伪类选择器:nth-child()
Apr 02 HTML / CSS
修复iPhone的safari浏览器上submit按钮圆角bug
Dec 24 HTML / CSS
CSS3+js实现简单的时钟特效
Mar 18 HTML / CSS
Html5适配iphoneX刘海屏的简单实现
Apr 09 HTML / CSS
HTML5 图片悬停放大的实现代码示例
Dec 04 HTML / CSS
使用canvas实现黑客帝国数字雨效果
Jan 02 HTML / CSS
CSS代码检查工具stylelint的使用方法详解
Mar 27 HTML / CSS
简单实现一个手持弹幕功能+文字抖动特效
Mar 31 HTML / CSS
纯CSS实现酷炫的霓虹灯效果
Apr 13 HTML / CSS
CSS几步实现赛博朋克2077风格视觉效果
Jun 16 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
PHP教程 变量定义
2009/10/23 PHP
php MessagePack介绍
2013/10/06 PHP
了解PHP的返回引用和局部静态变量
2015/06/04 PHP
Zend Framework教程之Zend_Config_Ini用法分析
2016/03/23 PHP
php基于curl实现的股票信息查询类实例
2016/11/11 PHP
PhpStorm本地断点调试的方法步骤
2018/05/21 PHP
php微信开发之关键词回复功能
2018/06/13 PHP
Yii2框架实现利用mpdf创建pdf文件功能示例
2019/02/08 PHP
JavaScript打字小游戏代码
2011/12/26 Javascript
基于jQuery的获取标签名的代码
2012/07/16 Javascript
用jQuery获取IE9下拉框默认值问题探讨
2013/07/22 Javascript
nodejs npm install全局安装和本地安装的区别
2014/06/05 NodeJs
BootStrap文件上传样式超好看【持续更新】
2016/05/10 Javascript
基于Bootstrap实现tab标签切换效果
2020/04/15 Javascript
微信+angularJS的SPA应用中用router进行页面跳转,jssdk校验失败问题解决
2016/09/09 Javascript
通过JS获取Request.QueryString()参数的值实现方法
2016/09/27 Javascript
BootStrap Table后台分页时前台删除最后一页所有数据refresh刷新后无数据问题
2016/12/28 Javascript
JavaScript轻松创建级联函数的方法示例
2017/02/10 Javascript
关于Angularjs中自定义指令一些有价值的细节和技巧小结
2018/04/22 Javascript
Nodejs中获取当前函数被调用的行数及文件名详解
2018/12/12 NodeJs
Vue组件跨层级获取组件操作
2020/07/27 Javascript
Python 绘图库 Matplotlib 入门教程
2018/04/19 Python
Python打开文件,将list、numpy数组内容写入txt文件中的方法
2018/10/26 Python
对python numpy.array插入一行或一列的方法详解
2019/01/29 Python
pyqt远程批量执行Linux命令程序的方法
2019/02/14 Python
Python3 实现串口两进程同时读写
2019/06/12 Python
使用 tf.nn.dynamic_rnn 展开时间维度方式
2020/01/21 Python
python GUI库图形界面开发之PyQt5布局控件QVBoxLayout详细使用方法与实例
2020/03/06 Python
python语言是免费还是收费的?
2020/06/15 Python
html5唤醒APP小记
2019/03/27 HTML / CSS
体育教师自我鉴定
2014/02/12 职场文书
班级安全教育实施方案
2014/02/23 职场文书
营销部内勤岗位职责
2014/04/30 职场文书
缓刑人员思想汇报
2014/10/11 职场文书
2015年国庆节寄语
2015/08/17 职场文书
启迪人心的励志语录:脾气永远不要大于本事
2020/01/02 职场文书