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实现质感细腻丝滑按钮
Mar 09 HTML / CSS
CSS中一些@规则的用法小结
Mar 09 HTML / CSS
image-set实现Retina屏幕下图片显示详细介绍
Dec 24 HTML / CSS
深入剖析webstorage[html5的本地数据处理]
Jul 11 HTML / CSS
html+css实现自定义图片上传按钮功能
Sep 04 HTML / CSS
html5中svg canvas和图片之间相互转化思路代码
Jan 24 HTML / CSS
html5通过postMessage进行跨域通信的方法
Dec 04 HTML / CSS
详解window.open被浏览器拦截的解决方案
Jul 18 HTML / CSS
HTML5 3D书本翻页动画的实现示例
Aug 28 HTML / CSS
几款流行的HTML5 UI框架比较(小结)
Apr 08 HTML / CSS
纯CSS实现hover图片pop-out弹出效果的实例代码
Apr 16 HTML / CSS
关于CSS自定义属性与前端页面的主题切换问题
Mar 21 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分页类代码
2013/04/02 PHP
『PHP』PHP截断函数mb_substr()使用介绍
2013/04/22 PHP
PHP生成条形码大揭秘
2015/09/24 PHP
深入解析PHP的Laravel框架中的event事件操作
2016/03/21 PHP
PHP图形计数器程序显示网站用户浏览量
2016/07/20 PHP
centos+php+coreseek+sphinx+mysql之一coreseek安装篇
2016/10/25 PHP
PHP模型Model类封装数据库操作示例
2019/03/14 PHP
js实现的日期操作类DateTime函数代码
2010/03/16 Javascript
jquery命令汇总,方便使用jquery的朋友
2012/06/26 Javascript
Extjs4 关于Store的一些操作(加载/回调/添加)
2013/04/18 Javascript
多种方法判断Javascript对象是否存在
2013/09/22 Javascript
javascript实现复选框选中属性
2015/03/25 Javascript
jQuery+PHP星级评分实现方法
2015/10/02 Javascript
JCrop+ajaxUpload 图像切割上传的实例代码
2016/07/20 Javascript
Bootstrap 填充Json数据的实例代码
2017/01/11 Javascript
javascript图片预览和上传(兼容IE)
2017/03/15 Javascript
微信小程序动态的加载数据实例代码
2017/04/14 Javascript
vue项目如何刷新当前页面的方法
2018/05/18 Javascript
百度小程序自定义通用toast组件
2019/07/17 Javascript
微信小程序云函数添加数据到数据库的方法
2020/03/04 Javascript
js实现翻牌小游戏
2020/07/31 Javascript
原生JS实现音乐播放器
2021/01/26 Javascript
[03:23]我的刀塔你不可能这么可爱 第一期金萌萌的故事
2014/06/20 DOTA
python中的colorlog库使用详解
2019/07/05 Python
用Python画小女孩放风筝的示例
2019/11/23 Python
tensorflow中tf.slice和tf.gather切片函数的使用
2020/01/19 Python
python实现将range()函数生成的数字存储在一个列表中
2020/04/02 Python
Python 多进程、多线程效率对比
2020/11/19 Python
详解Css3新特性应用之过渡与动画
2017/01/10 HTML / CSS
css3实现背景图片拉伸效果像桌面壁纸一样
2013/08/19 HTML / CSS
英国工具中心:UK Tool Centre
2017/07/10 全球购物
悬挂训练绳:TRX
2017/12/14 全球购物
雅诗兰黛澳大利亚官网:Estée Lauder澳大利亚
2019/05/31 全球购物
销售主管竞聘书
2014/03/31 职场文书
优秀班组申报材料
2014/12/25 职场文书
2016年春季趣味运动会开幕词
2016/03/04 职场文书