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 去除Array中的null值示例代码
Nov 20 Javascript
关于javaScript注册click事件传递参数的不成功问题
Jul 18 Javascript
ES5学习教程之Array对象
Apr 01 Javascript
JavaScript运动框架 解决速度正负取整问题(一)
May 17 Javascript
基于Vue实例生命周期(全面解析)
Aug 16 Javascript
微信小程使用swiper组件实现图片轮播切换显示功能【附源码下载】
Dec 12 Javascript
JavaScript引用类型Date常见用法实例分析
Aug 08 Javascript
关于layui的下拉搜索框异步加载数据的解决方法
Sep 28 Javascript
基于JS实现简单滑块拼图游戏
Oct 12 Javascript
JavaScript实现移动端带transition动画的轮播效果
Mar 24 Javascript
vue实现轮播图帧率播放
Jan 26 Vue.js
Angular性能优化之第三方组件和懒加载技术
May 10 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
成本8450万,票房仅2亿,口碑两极分化,又一部DC电影扑街了
2020/04/09 欧美动漫
php var_export与var_dump 输出的不同
2013/08/09 PHP
PHP实现简单ajax Loading加载功能示例
2016/12/28 PHP
PHP中__set()实例用法和基础讲解
2019/07/23 PHP
laravel框架模型中非静态方法也能静态调用的原理分析
2019/11/23 PHP
Javascript与flash交互通信基础教程
2008/08/07 Javascript
关于捕获用户何时点击window.onbeforeunload的取消事件
2011/03/06 Javascript
获取客户端电脑日期时间js代码(jquery)
2012/09/12 Javascript
Dojo Javascript 编程规范 规范自己的JavaScript书写
2014/10/26 Javascript
基于JavaScript获取鼠标位置的各种方法
2015/12/16 Javascript
Node.js的项目构建工具Grunt的安装与配置教程
2016/05/12 Javascript
angular.js之路由的选择方法
2016/09/24 Javascript
Angular2中select用法之设置默认值与事件详解
2017/05/07 Javascript
基于Vue的SPA动态修改页面title的方法(推荐)
2018/01/02 Javascript
nodejs中函数的调用实例详解
2018/10/31 NodeJs
Vue-cli项目部署到Nginx服务器的方法
2019/11/01 Javascript
vue 父组件通过$refs获取子组件的值和方法详解
2019/11/07 Javascript
js实现百度登录窗口拖拽效果
2020/03/19 Javascript
详解vue高级特性
2020/06/09 Javascript
python numpy函数中的linspace创建等差数列详解
2017/10/13 Python
深入理解Python分布式爬虫原理
2017/11/23 Python
Python实现扣除个人税后的工资计算器示例
2018/03/26 Python
利用python如何在前程无忧高效投递简历
2019/05/07 Python
在win10和linux上分别安装Python虚拟环境的方法步骤
2019/05/09 Python
Django REST framework内置路由用法
2019/07/26 Python
pandas实现将日期转换成timestamp
2019/12/07 Python
python3检查字典传入函数键是否齐全的实例
2020/06/05 Python
详解appium自动化测试工具(monitor、uiautomatorviewer)
2021/01/27 Python
英国顶级珠宝品牌之家:John Greed
2018/06/09 全球购物
政治表现评语
2014/05/04 职场文书
镇创先争优活动总结
2014/08/28 职场文书
2015纪念九一八事变84周年演讲稿
2015/03/19 职场文书
Oracle 数据仓库ETL技术之多表插入语句的示例详解
2021/04/12 Oracle
Python机器学习算法之决策树算法的实现与优缺点
2021/05/13 Python
Python中OpenCV实现简单车牌字符切割
2021/06/11 Python
JS前端轻量fabric.js系列物体基类
2022/08/05 Javascript