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实现放大镜效果
Sep 02 Javascript
使用js获取图片原始尺寸
Dec 03 Javascript
javascript实现在指定元素中垂直水平居中
Sep 13 Javascript
jquery对象和DOM对象的任意相互转换
Feb 21 Javascript
BootStrap使用popover插件实现鼠标经过显示并保持显示框
Jun 23 Javascript
jQuery遍历DOM的父级元素、子级元素和同级元素的方法总结
Jul 07 Javascript
angular.js和vue.js中实现函数去抖示例(debounce)
Jan 18 Javascript
Babel 入门教程学习笔记
Jun 13 Javascript
详解React native fetch遇到的坑
Aug 30 Javascript
Vue 中对图片地址进行拼接的方法
Sep 03 Javascript
微信小程序缓存过期时间的使用详情
May 12 Javascript
js实现开关灯效果
Mar 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
mysql,mysqli,PDO的各自不同介绍
2012/09/19 PHP
浅析Apache中RewriteCond规则参数的详细介绍
2013/06/30 PHP
php设置页面超时时间解决方法
2015/09/22 PHP
Dojo之路:如何利用Dojo实现Drag and Drop效果
2007/04/10 Javascript
jquery1.4 教程二 ajax方法的改进
2010/02/25 Javascript
jQuery 下拉列表 二级联动插件分享
2012/03/29 Javascript
JS HTML5 音乐天气播放器(Ajax获取天气信息)
2013/05/26 Javascript
javascript实现数字验证码的简单实例
2014/02/10 Javascript
jquery验证邮箱格式是否正确实例讲解
2015/11/16 Javascript
Easyui form combobox省市区三级联动
2016/01/13 Javascript
基于JS实现新闻列表无缝向上滚动实例代码
2016/01/22 Javascript
JS打印组合功能
2016/08/04 Javascript
js中通过getElementsByName访问name集合对象的方法
2016/10/31 Javascript
推荐三款不错的图片压缩上传插件(webuploader、localResizeIMG4、LUploader)
2017/04/21 Javascript
微信小程序block的使用教程
2018/04/01 Javascript
jQuery实现checkbox全选功能完整实例
2018/07/12 jQuery
layui 数据表格 点击分页按钮 监听事件的实例
2019/09/02 Javascript
介绍Python的Django框架中的QuerySets
2015/04/20 Python
Python UnicodeEncodeError: 'gbk' codec can't encode character 解决方法
2015/04/24 Python
举例讲解Python设计模式编程中对抽象工厂模式的运用
2016/03/02 Python
深入分析python中整型不会溢出问题
2018/06/18 Python
python+numpy实现的基本矩阵操作示例
2019/07/19 Python
numpy.meshgrid()理解(小结)
2019/08/01 Python
给你一面国旗 教你用python画中国国旗
2019/09/24 Python
Python3运算符常见用法分析
2020/02/14 Python
基于python实现查询ip地址来源
2020/06/02 Python
意大利宠物用品购物网站:Bauzaar
2018/09/15 全球购物
优秀教师获奖感言
2014/01/31 职场文书
家长对老师的评语
2014/04/18 职场文书
维修工先进事迹
2014/05/29 职场文书
英语自我介绍演讲稿
2014/09/01 职场文书
中学生逃课检讨书
2015/02/17 职场文书
检讨书模板大全
2015/05/07 职场文书
2015年档案室工作总结
2015/05/23 职场文书
有关西游记的读书笔记
2015/06/25 职场文书
Python中三种花式打印的示例详解
2022/03/19 Python