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 相关文章推荐
基于jquery的返回顶部效果(兼容IE6)
Jan 17 Javascript
js substr、substring和slice使用说明小记
Sep 15 Javascript
别了 JavaScript中的isXX系列
Aug 01 Javascript
js实现目录定位正文示例
Nov 14 Javascript
js 异步操作回调函数如何控制执行顺序
Dec 24 Javascript
javascript淘宝主图放大镜功能
Oct 20 Javascript
原JS实现banner图的常用功能
Jun 12 Javascript
Angular-UI Bootstrap组件实现警报功能
Jul 16 Javascript
基于Vue中使用节流Lodash throttle详解
Oct 30 Javascript
解决node终端下运行js文件不支持ES6语法
Apr 04 Javascript
深入解读VUE中的异步渲染的实现
Jun 19 Javascript
Element Dropdown下拉菜单的使用方法
Jul 26 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
PHP sprintf()函数用例解析
2011/05/18 PHP
php+xml实现在线英文词典查询的方法
2015/01/23 PHP
php5.3后静态绑定用法详解
2016/11/11 PHP
PHP开发APP端微信支付功能
2017/02/17 PHP
JAVASCRIPT HashTable
2007/01/22 Javascript
js为空或不是对象问题的快速解决方法
2013/12/11 Javascript
原生js和jquery实现图片轮播特效
2015/04/23 Javascript
全面解析Bootstrap表单使用方法(表单按钮)
2015/11/24 Javascript
第二篇Bootstrap起步
2016/06/21 Javascript
JavaScript闭包的简单应用
2017/09/01 Javascript
js实现动态改变radio状态的方法
2018/02/28 Javascript
JavaScript轮播停留效果的实现思路
2018/05/24 Javascript
javascript实现超好看的3D烟花特效
2020/01/01 Javascript
Python中处理unchecked未捕获异常实例
2015/01/17 Python
基于Python的XSS测试工具XSStrike使用方法
2017/07/29 Python
详解Python中的四种队列
2018/05/21 Python
使用Scrapy爬取动态数据
2018/10/21 Python
python之拟合的实现
2019/07/19 Python
python通过txt文件批量安装依赖包的实现步骤
2019/08/13 Python
Python 实现自动导入缺失的库
2019/10/29 Python
Python 文件数据读写的具体实现
2020/01/24 Python
Tensorflow中的图(tf.Graph)和会话(tf.Session)的实现
2020/04/22 Python
什么是Python中的匿名函数
2020/06/02 Python
服装厂厂长职责
2013/12/16 职场文书
银行贷款承诺书
2014/03/29 职场文书
信用卡工资证明格式
2014/09/13 职场文书
2014党员民主评议个人思想剖析发言
2014/09/19 职场文书
县委务虚会发言材料
2014/10/20 职场文书
区域销售经理岗位职责
2015/04/02 职场文书
上班迟到检讨书
2015/05/06 职场文书
大学体育课感想
2015/08/10 职场文书
维护民族团结心得体会2016
2016/01/15 职场文书
2016年清明节期间群众祭祀活动工作总结
2016/04/01 职场文书
Python排序算法之插入排序及其优化方案详解
2021/06/11 Python
uniapp 微信小程序 自定义tabBar 导航
2022/04/22 Javascript
前端使用svg图片改色实现示例
2022/07/23 HTML / CSS