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 相关文章推荐
用js实现判断当前网址的来路如果不是指定的来路就跳转到指定页面
May 02 Javascript
javascript中关于break,continue的特殊用法与介绍
May 24 Javascript
基于jquery创建的一个图片、视频缓冲的效果样式插件
Aug 28 Javascript
angularJS中$apply()方法详解
Jan 07 Javascript
javascript修改图片src的方法
Jan 27 Javascript
纯javascript响应式树形菜单效果
Nov 10 Javascript
JavaScript如何获取数组最大值和最小值
Nov 18 Javascript
封装属于自己的JS组件
Jan 27 Javascript
基于JS快速实现导航下拉菜单动画效果附源码下载
Oct 27 Javascript
Vue-router的使用和出现空白页,路由对象属性详解
Sep 03 Javascript
Vue组件内部实现一个双向数据绑定的实例代码
Apr 04 Javascript
JS实现可用滑块滑动的缓动图代码
Sep 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 使用post,get的一种简洁方式
2010/04/25 PHP
PHP调用.NET的WebService 简单实例
2015/03/27 PHP
js显示时间 js显示最后修改时间
2013/01/02 Javascript
鼠标经过显示二级菜单js特效
2013/08/13 Javascript
fullpage.js全屏滚动插件使用实例
2016/09/06 Javascript
微信小程序 chooseImage选择图片或者拍照
2017/04/07 Javascript
Nodejs调用Dll模块的方法
2018/09/17 NodeJs
发布一款npm包帮助理解npm的使用
2019/01/03 Javascript
原生JS使用Canvas实现拖拽式绘图功能
2019/06/05 Javascript
[01:26]DOTA2荣耀之路2:iG,China
2018/05/24 DOTA
python实现定时同步本机与北京时间的方法
2015/03/24 Python
Python实现程序的单一实例用法分析
2015/06/03 Python
使用celery执行Django串行异步任务的方法步骤
2019/06/06 Python
Python实现的微信红包提醒功能示例
2019/08/22 Python
从多个tfrecord文件中无限读取文件的例子
2020/02/17 Python
Python的PIL库中getpixel方法的使用
2020/04/09 Python
python判断一个变量是否已经设置的方法
2020/08/13 Python
css3发光搜索表单分享
2014/04/11 HTML / CSS
Html5元素及基本语法详解
2016/08/02 HTML / CSS
canvas实现漂亮的下雨效果的示例
2018/04/18 HTML / CSS
伦敦高级内衣品牌:Agent Provocateur(大内密探)
2016/08/23 全球购物
意大利网上药房:Farmacia 33
2020/01/27 全球购物
三星加拿大官方网上商店:Samsung CA
2020/12/18 全球购物
请编写一个 C 函数,该函数在给定的内存区域搜索给定的字符,并返回该字符所在位置索引值
2014/09/15 面试题
实习自荐信
2013/10/13 职场文书
中式婚礼主持词
2014/03/13 职场文书
有关爱国演讲稿
2014/05/07 职场文书
2014年销售人员工作总结
2014/11/27 职场文书
市级三好学生评语
2014/12/29 职场文书
学校捐款活动总结
2015/05/09 职场文书
2019感恩宣传标语!
2019/07/05 职场文书
MySQL表的增删改查基础教程
2021/04/07 MySQL
java实现对Hadoop的操作
2021/07/01 Java/Android
CentOS7安装MySQL8的超级详细教程(无坑!)
2022/06/10 Servers
win server2012 r2服务器共享文件夹如何设置
2022/06/21 Servers
Redis sentinel哨兵集群的实现步骤
2022/07/15 Redis