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 中关于CSS操作部分使用说明
Jun 10 Javascript
用jquery实现等比例缩放图片效果插件
Jul 24 Javascript
JavaScript解析URL参数示例代码
Aug 12 Javascript
JavaScript限定复选框的选择个数示例代码
Aug 25 Javascript
Firefox和IE兼容性问题及解决方法总结
Oct 08 Javascript
JavaScript通过元素的ID和name设置样式
Jul 08 Javascript
JavaScript中的值类型转换介绍
Dec 31 Javascript
AngularJS基础 ng-init 指令简单示例
Aug 02 Javascript
javascript设计模式之单体模式学习笔记
Feb 15 Javascript
JS+HTML5 FileReader实现文件上传前本地预览功能
Mar 27 Javascript
Angularjs单选框相关的示例代码
Aug 17 Javascript
vue非父子组件通信问题及解决方法
Jun 11 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的FTP学习(二)[转自奥索]
2006/10/09 PHP
php抓取页面的几种方法详解
2013/06/17 PHP
PHP获取客户端真实IP地址的5种情况分析和实现代码
2014/07/08 PHP
使用PHPMailer实现邮件发送代码分享
2014/10/23 PHP
PHP错误机制知识汇总
2016/03/24 PHP
PHP数组常用函数实例小结
2018/08/20 PHP
jquery对dom的操作常用方法整理
2013/06/25 Javascript
浅析ajax请求json数据并用js解析(示例分析)
2013/07/13 Javascript
js分页工具实例
2015/01/28 Javascript
Jquery左右滑动插件之实现超级炫酷动画效果附源码下载
2015/12/02 Javascript
js获取客户端操作系统类型的方法【测试可用】
2016/05/27 Javascript
AngularJS全局scope与Isolate scope通信用法示例
2016/11/22 Javascript
浅谈js中startsWith 函数不能在任何浏览器兼容的问题
2017/03/01 Javascript
初探js和简单隐藏效果的实例
2017/11/23 Javascript
angularJs 表格添加删除修改查询方法
2018/02/27 Javascript
详解vuex 渐进式教程实例代码
2018/11/27 Javascript
微信公众平台 客服接口发消息的实现代码(Java接口开发)
2019/04/17 Javascript
python实现得到一个给定类的虚函数
2014/09/28 Python
实例探究Python以并发方式编写高性能端口扫描器的方法
2016/06/14 Python
浅析python协程相关概念
2018/01/20 Python
python过滤中英文标点符号的实例代码
2019/07/15 Python
Python hashlib模块加密过程解析
2019/11/05 Python
最新Python idle下载、安装与使用教程图文详解
2020/11/28 Python
Notino匈牙利:购买香水和化妆品
2019/04/12 全球购物
美国林业供应商:Forestry Suppliers
2019/05/01 全球购物
英国名牌服装购物网站:OD’s Designer
2019/09/02 全球购物
外语系毕业生自荐信范文
2013/12/16 职场文书
实习评语
2013/12/16 职场文书
高一历史教学反思
2014/01/13 职场文书
服务之星获奖感言
2014/01/21 职场文书
施工工地安全标语
2014/06/07 职场文书
分公司总经理岗位职责
2014/07/30 职场文书
2015年体育教学工作总结
2015/05/20 职场文书
新兵入伍决心书
2015/09/22 职场文书
SpringBoot整合JWT的入门指南
2021/06/29 Java/Android
SQL SERVER存储过程用法详解
2022/02/24 SQL Server