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


Posted in Javascript onAugust 21, 2013

人们总喜欢往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-*" 数据

Javascript 相关文章推荐
用js实现控制内容的向上向下滚动效果
Jun 26 Javascript
Mootools 1.2教程 事件处理
Sep 15 Javascript
JS应用正则表达式转换大小写示例
Sep 18 Javascript
js实现延迟加载的方法
Jun 24 Javascript
跟我学习javascript的闭包
Nov 16 Javascript
JS模拟简易滚动条效果代码(附demo源码)
Apr 05 Javascript
Vue 单文件中的数据传递示例
Mar 21 Javascript
vue插件mescroll.js实现移动端上拉加载和下拉刷新
Mar 07 Javascript
JavaScript高阶教程之“==”隐藏下的类型转换
Apr 11 Javascript
如何利用vue+vue-router+elementUI实现简易通讯录
May 13 Javascript
vue实现抖音时间转盘
Sep 08 Javascript
vue2.x 通过后端接口代理,获取qq音乐api的数据示例
Oct 30 Javascript
JavaScript 中的日期和时间及表示标准介绍
Aug 21 #Javascript
Ext JS 4实现带week(星期)的日期选择控件(实战二)
Aug 21 #Javascript
window.location.href = window.location.href 跳转无反应 a超链接onclick事件写法
Aug 21 #Javascript
Ext JS 4实现带week(星期)的日期选择控件(实战一)
Aug 21 #Javascript
jquery.qrcode在线生成二维码使用示例
Aug 21 #Javascript
jquery设置控件位置的方法
Aug 21 #Javascript
获取表单控件原始(初始)值的方法
Aug 21 #Javascript
You might like
咖啡的植物学知识
2021/03/03 咖啡文化
PHP中isset()和unset()函数的用法小结
2014/03/11 PHP
ThinkPHP框架中使用Memcached缓存数据的方法
2018/03/31 PHP
jquery 实现的全选和反选
2009/04/15 Javascript
js单例模式详解实例
2013/11/21 Javascript
js函数名与form表单元素同名冲突的问题
2014/03/07 Javascript
与Math.pow 相反的函数使用介绍
2014/08/04 Javascript
alert出数组中的随即值代码
2014/09/25 Javascript
jQuery基于ajax实现星星评论代码
2015/08/07 Javascript
基于jQuery日历插件制作日历
2016/03/11 Javascript
简单讲解jQuery中的子元素过滤选择器
2016/04/18 Javascript
基于javascript编写简单日历
2016/05/02 Javascript
ztree简介_动力节点Java学院整理
2017/07/19 Javascript
JavaScript数组的5种迭代方法
2017/09/29 Javascript
Vue.js实现分页查询功能
2020/11/15 Javascript
Angular8 Http拦截器简单使用教程
2019/08/20 Javascript
vant 解决tab切换插件标题样式自定义的问题
2020/11/13 Javascript
[01:14]2019完美世界城市挑战赛(秋季赛)全国总决赛精彩花絮
2020/01/08 DOTA
[01:06:43]完美世界DOTA2联赛PWL S3 PXG vs GXR 第二场 12.19
2020/12/24 DOTA
python实现代理服务功能实例
2013/11/15 Python
python存储16bit和32bit图像的实例
2018/12/05 Python
基于Python的图像数据增强Data Augmentation解析
2019/08/13 Python
python openvc 裁剪、剪切图片 提取图片的行和列
2019/09/19 Python
django框架创建应用操作示例
2019/09/26 Python
浅谈tensorflow 中tf.concat()的使用
2020/02/07 Python
python构造IP报文实例
2020/05/05 Python
python os模块常用的29种方法使用详解
2020/06/02 Python
python使用建议技巧分享(三)
2020/08/18 Python
如何在python中处理配置文件代码实例
2020/09/27 Python
基于注解实现 SpringBoot 接口防刷的方法
2021/03/02 Python
网上签名寄语活动留言
2014/01/18 职场文书
人力资源本科毕业生求职信
2014/06/04 职场文书
2015年计生工作总结范文
2015/04/24 职场文书
节水宣传标语口号
2015/12/26 职场文书
2016天猫双十一广告语
2016/01/28 职场文书
如何写一份具有法律效力的借款协议书?
2019/07/02 职场文书