html5的自定义data-*属性与jquery的data()方法的使用


Posted in HTML / CSS onJuly 02, 2014

人们总喜欢往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-*" 数据。

HTML / CSS 相关文章推荐
CSS3混合模式mix-blend-mode/background-blend-mode简介
Mar 15 HTML / CSS
CSS实现雨滴动画效果的实例代码
Oct 08 HTML / CSS
CSS3制作皮卡丘动画壁纸的示例
Nov 02 HTML / CSS
Html5 实现微信分享及自定义内容的流程
Aug 20 HTML / CSS
html5 video标签屏蔽右键视频另存为的js代码
Nov 12 HTML / CSS
深入解析HTML5的IndexedDB索引数据库
Sep 14 HTML / CSS
HTML5 canvas 瀑布流文字效果的示例代码
Jan 31 HTML / CSS
利用 Canvas实现绘画一个未闭合的带进度条的圆环
Jul 26 HTML / CSS
浅析HTML5页面元素及属性
Jan 20 HTML / CSS
血轮眼轮回眼特效 html+css
Mar 31 HTML / CSS
html5表单的required属性使用
Jul 07 HTML / CSS
CSS浮动引起的高度塌陷问题
Aug 05 HTML / CSS
Html5新特性用canvas标签画多条直线附效果截图
Jun 30 #HTML / CSS
HTML5通过调用canvas对象的getContext()方法来获取绘图环境
Jun 23 #HTML / CSS
HTML5在canvas中绘制复杂形状附效果截图
Jun 23 #HTML / CSS
HTML5 在canvas中绘制矩形附效果图
Jun 23 #HTML / CSS
HTML5如何为形状图上颜色怎么绘制具有颜色和透明度的矩形
Jun 23 #HTML / CSS
HTML5 在canvas中绘制文本附效果图
Jun 23 #HTML / CSS
HTML5使用drawImage()方法绘制图像
Jun 23 #HTML / CSS
You might like
php中配置文件操作 如config.php文件的读取修改等操作
2012/07/07 PHP
浅谈php调用python文件
2019/03/29 PHP
Query中click(),bind(),live(),delegate()的区别
2013/11/19 Javascript
angularJS中$apply()方法详解
2015/01/07 Javascript
js实现文字在按钮上滚动的方法
2015/08/20 Javascript
JS简单限制textarea内输入字符数量的方法
2015/10/14 Javascript
JS中innerHTML和pasteHTML的区别实例分析
2016/06/22 Javascript
element 结合vue 在表单验证时有值却提示错误的解决办法
2018/01/22 Javascript
React 使用browserHistory项目访问404问题解决
2018/06/01 Javascript
element ui table(表格)实现点击一行展开功能
2018/12/04 Javascript
Vue SSR 即时编译技术的实现
2020/05/06 Javascript
Vue+Bootstrap实现简易学生管理系统
2021/02/09 Vue.js
python 获取et和excel的版本号
2009/04/09 Python
python网页请求urllib2模块简单封装代码
2014/02/07 Python
python实现机器学习之多元线性回归
2018/09/06 Python
pycharm debug功能实现跳到循环末尾的方法
2018/11/29 Python
python实现两个经纬度点之间的距离和方位角的方法
2019/07/05 Python
详解python实现数据归一化处理的方式:(0,1)标准化
2019/07/17 Python
基于python二叉树的构造和打印例子
2019/08/09 Python
Python倒排索引之查找包含某主题或单词的文件
2019/11/13 Python
Python计算指定日期是今年的第几天(三种方法)
2020/03/26 Python
python 6种方法实现单例模式
2020/12/15 Python
对CSS3选择器的研究(详解)
2016/09/16 HTML / CSS
单身旅行者的单身假期:Just You
2018/04/08 全球购物
优秀中专生推荐信
2013/11/17 职场文书
自我评价格式
2014/01/06 职场文书
元旦促销方案
2014/03/15 职场文书
银行内勤岗位职责
2014/04/09 职场文书
《学会合作》教学反思
2014/04/12 职场文书
产品售后服务承诺书
2014/05/21 职场文书
群教个人对照检查材料
2014/08/20 职场文书
弘扬焦裕禄精神走群众路线思想汇报
2014/09/12 职场文书
法人委托书范本
2014/09/15 职场文书
微笑面对生活演讲稿
2014/09/23 职场文书
领导参观欢迎词
2015/01/26 职场文书
解决Tkinter中button按钮未按却主动执行command函数的问题
2021/05/23 Python