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 相关文章推荐
JavaScript Math.ceil() 函数使用介绍
Dec 11 Javascript
JavaScript分析、压缩工具JavaScript Analyser
Dec 31 Javascript
以WordPress为例讲解jQuery美化页面Title的方法
May 23 Javascript
JavaScript页面实时显示当前时间实例代码
Oct 23 Javascript
过期软件破解办法实例详解
Jan 04 Javascript
React Native预设占位placeholder的使用
Sep 28 Javascript
Vue.js2.0中的变化小结
Oct 24 Javascript
JS删除数组里的某个元素方法
Feb 03 Javascript
Vue 实现双向绑定的四种方法
Mar 16 Javascript
vue拦截器实现统一token,并兼容IE9验证功能
Apr 26 Javascript
微信小程序系列之自定义顶部导航功能
May 21 Javascript
微信小程序npm引入vant-weapp的踩坑记录
Aug 01 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数组应用之比较两个时间的相减排序
2008/08/18 PHP
PHP strtr() 函数使用说明
2008/11/21 PHP
Codeigniter中集成smarty和adodb的方法
2016/03/04 PHP
无需数据库在线投票调查php代码
2016/07/20 PHP
phpstudy2018升级MySQL5.5为5.7教程(图文)
2018/10/24 PHP
php数组指针函数功能及用法示例
2020/02/11 PHP
用JavaScript玩转游戏物理(一)运动学模拟与粒子系统
2010/06/19 Javascript
jQuery 表单验证扩展代码(一)
2010/10/11 Javascript
Web前端设计模式  制作漂亮的弹出层
2010/10/29 Javascript
关于JQuery($.load)事件的用法和分析
2013/04/09 Javascript
JQuery DataTable删除行后的页面更新利用Ajax解决
2013/05/17 Javascript
gridpanel动态加载数据的实例代码
2013/07/18 Javascript
js实现弹出窗口、页面变成灰色并不可操作的例子分享
2014/05/10 Javascript
node.js中的fs.fstat方法使用说明
2014/12/15 Javascript
轻松学习jQuery插件EasyUI EasyUI创建树形网络(1)
2015/11/30 Javascript
全面解析Bootstrap中nav、collapse的使用方法
2016/05/22 Javascript
微信小程序开发之实现选项卡(窗口顶部TabBar)页面切换
2016/11/25 Javascript
canvas实现绘制吃豆鱼效果
2017/01/12 Javascript
Javascript实现登录记住用户名和密码功能
2017/03/22 Javascript
vue中配置mint-ui报css错误问题的解决方法
2017/10/11 Javascript
详解nuxt sass全局变量(公共scss解决方案)
2018/06/27 Javascript
了解重排与重绘
2019/05/29 Javascript
Vue.js组件props数据验证实现详解
2019/10/19 Javascript
基于vue.js仿淘宝收货地址并设置默认地址的案例分析
2020/08/20 Javascript
JavaScript实现单点登录的示例
2020/09/23 Javascript
[01:13:17]Secret vs NB 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
Python实现读取及写入csv文件的方法示例
2018/01/12 Python
Python爬虫获取图片并下载保存至本地的实例
2018/06/01 Python
python+selenium 脚本实现每天自动登记的思路详解
2020/03/11 Python
TripAdvisor斯洛伐克:阅读评论、比较价格和酒店预订
2018/04/25 全球购物
Paper Cape官网:美国婴儿和儿童服装品牌
2019/11/02 全球购物
解决方案设计综合面试题
2015/08/31 面试题
2014年消防工作实施方案
2014/02/20 职场文书
电话客服专员岗位职责
2014/06/28 职场文书
总经理岗位职责范本
2015/04/01 职场文书
收入证明怎么写
2015/06/12 职场文书