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 相关文章推荐
解决extjs在firefox中关闭窗口再打开后iframe中js函数访问不到的问题
Nov 06 Javascript
js 删除数组的几种方法小结
Feb 21 Javascript
JavaScript中的Math 使用介绍
Apr 21 Javascript
ie8下修改input的type属性报错的解决方法
Sep 16 Javascript
基于JavaScript实现TAB标签效果
Jan 12 Javascript
关于RequireJS的简单介绍即使用方法
Oct 20 Javascript
JavaScript阻止表单提交方法(附代码)
Aug 15 Javascript
vue-cli下的vuex的简单Demo图解(实现加1减1操作)
Feb 26 Javascript
Vue的transition-group与Virtual Dom Diff算法的使用
Dec 09 Javascript
解决nuxt页面中mounted、created、watch执行两遍的问题
Nov 05 Javascript
js之ajax文件上传
May 13 Javascript
Vue中插槽slot的使用方法与应用场景详析
Jun 08 Vue.js
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
第十一节--重载
2006/11/16 PHP
apache+php+mysql安装配置方法小结
2010/08/01 PHP
PHP __autoload()方法真的影响性能吗?
2012/03/30 PHP
PHP开发的微信现金红包功能示例
2017/06/29 PHP
JS判断不同分辨率调用不同的CSS样式文件实现思路及测试代码
2013/01/23 Javascript
jquery实现可拖动DIV自定义保存到数据的实例
2013/11/20 Javascript
利用jquery动画特效和css打造的侧边弹出垂直导航
2014/04/04 Javascript
使用jquery插件qrcode生成二维码
2015/10/22 Javascript
ajax接收后台数据在html页面显示
2017/02/19 Javascript
jQuery中的on与bind绑定事件区别实例详解
2017/02/28 Javascript
nodejs async异步常用函数总结(推荐)
2017/11/17 NodeJs
Express本地测试HTTPS的示例代码
2018/06/06 Javascript
5分钟快速掌握JS中var、let和const的异同
2018/09/19 Javascript
layui实现数据分页功能
2019/07/27 Javascript
关于vue3.0中的this.$router.replace({ path: '/'})刷新无效果问题
2020/01/16 Javascript
vue项目配置使用flow类型检查的步骤
2020/03/18 Javascript
JavaScript字符和ASCII实现互相转换
2020/06/03 Javascript
Python中使用strip()方法删除字符串中空格的教程
2015/05/20 Python
Python的“二维”字典 (two-dimension dictionary)定义与实现方法
2016/04/27 Python
Python selenium如何设置等待时间
2016/09/15 Python
numpy ndarray 取出满足特定条件的某些行实例
2019/12/05 Python
浅谈Pytorch torch.optim优化器个性化的使用
2020/02/20 Python
python实现文字版扫雷
2020/04/24 Python
Python OpenCV读取中文路径图像的方法
2020/07/02 Python
Python获取指定网段正在使用的IP
2020/12/14 Python
苏格兰领先的多渠道鞋店:Begg Shoes
2019/10/22 全球购物
sort命令的作用和用法
2012/11/04 面试题
婚前财产公证书
2014/04/10 职场文书
个人担保书范文
2014/05/20 职场文书
小学国庆节活动总结
2015/03/23 职场文书
交通事故被告代理词
2015/05/23 职场文书
农村老人去世追悼词
2015/06/23 职场文书
证婚人婚礼致辞
2015/07/28 职场文书
汽车修理厂管理制度
2015/08/05 职场文书
2016年圣诞节义工活动总结
2016/04/01 职场文书
前端监听websocket消息并实时弹出(实例代码)
2021/11/27 Javascript