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为搜索栏增加tag提示
Jun 22 Javascript
JavaScript 全角转半角部分
Oct 28 Javascript
picChange 图片切换特效的函数代码
May 06 Javascript
javascript 闭包疑问
Dec 30 Javascript
jQuery源码分析-03构造jQuery对象-源码结构和核心函数
Nov 14 Javascript
javascript 文本框水印/占位符(watermark/placeholder)实现方法
Jan 15 Javascript
全面理解闭包机制
Jul 11 Javascript
javascript 动态样式添加的简单实现
Oct 11 Javascript
js实现小窗口拖拽效果
Dec 03 Javascript
element-ui组件table实现自定义筛选功能的示例代码
Mar 15 Javascript
微信小程序后端实现授权登录
Feb 24 Javascript
详细分析Node.js 模块系统
Jun 28 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性能优化分析工具XDebug 大型网站调试工具
2011/05/22 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(二)
2014/06/23 PHP
PHP实现根据银行卡号判断银行
2015/04/29 PHP
PHPTree――php快速生成无限级分类
2018/03/30 PHP
Javascript与vbscript数据共享
2007/01/09 Javascript
javaScript call 函数的用法说明
2010/04/09 Javascript
JavaScript 学习历程和心得分享
2010/12/12 Javascript
document.createElement()用法
2013/03/13 Javascript
PHP+jQuery+Ajax实现多图片上传效果
2015/03/14 Javascript
漫谈JS引擎的运行机制 你应该知道什么
2016/06/15 Javascript
js删除Array数组中指定元素的两种方法
2016/08/03 Javascript
JavaScript 数组的深度复制解析
2016/11/02 Javascript
ES6 Promise对象概念与用法分析
2017/04/01 Javascript
vue拦截器Vue.http.interceptors.push使用详解
2017/04/22 Javascript
JavaScript ES6中const、let与var的对比详解
2017/06/18 Javascript
Angular4表单验证代码详解
2017/09/03 Javascript
Vue.js实现的表格增加删除demo示例
2018/05/22 Javascript
对layui初始化列表的CheckBox属性详解
2019/09/13 Javascript
JavaScript闭包相关知识解析
2019/10/19 Javascript
nodejs+express最简易的连接数据库的方法
2020/12/23 NodeJs
Python Socket编程之多线程聊天室
2018/07/28 Python
Python中按值来获取指定的键
2019/03/04 Python
python对文件目录的操作方法实例总结
2019/06/24 Python
Python any()函数的使用方法
2019/10/28 Python
Python HTMLTestRunner库安装过程解析
2020/05/25 Python
Python自动发送和收取邮件的方法
2020/08/12 Python
CSS3教程(10):CSS3 HSL声明设置颜色
2009/04/02 HTML / CSS
Melissa鞋马来西亚官方网站:MDreams马来西亚
2018/04/05 全球购物
德国消费电子产品购物网站:Guter Kauf
2020/09/15 全球购物
高中毕业生登记表自我鉴定范文
2014/03/18 职场文书
培训讲师岗位职责
2014/04/13 职场文书
班主任对学生的评语
2014/04/26 职场文书
光学与应用专业毕业生求职信
2014/09/01 职场文书
高中生旷课检讨书
2014/10/08 职场文书
离婚协议书格式
2014/11/21 职场文书
解决pycharm下载库时出现Failed to install package的问题
2021/09/04 Python