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 相关文章推荐
html dom节点操作(获取/修改/添加或删除)
Jan 23 Javascript
jQuery easyui的validatebox校验规则扩展及easyui校验框validatebox用法
Jan 18 Javascript
JavaScript学习笔记之创建对象
Mar 25 Javascript
深入理解Javascript中的valueOf与toString
Jan 04 Javascript
微信小程序 页面滑动事件的实例详解
Oct 12 Javascript
原生js封装添加class,删除class的实例
Nov 06 Javascript
Vue2.0中集成UEditor富文本编辑器的方法
Mar 03 Javascript
详解Vue项目编译后部署在非网站根目录的解决方案
Apr 26 Javascript
微信小程序获取音频时长与实时获取播放进度问题
Aug 28 Javascript
js jquery 获取某一元素到浏览器顶端的距离实现方法
Sep 05 jQuery
jQuery中each遍历的三种方法实例分析
Sep 07 jQuery
HTML+JS实现在线朗读器
Feb 15 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 一个页面执行时间类代码
2010/03/05 PHP
浅析php变量作用域的一些问题
2013/08/08 PHP
php判断两个日期之间相差多少个月份的方法
2015/06/18 PHP
Zend Framework动作助手Json用法实例分析
2016/03/05 PHP
jquery.jstree 增加节点的双击事件代码
2010/07/27 Javascript
js+数组实现网页上显示时间/星期几的实用方法
2013/01/18 Javascript
JavaScript中的console.group()函数详细介绍
2014/12/29 Javascript
Nginx上传文件全部缓存解决方案
2015/08/17 Javascript
关于javascript中dataset的问题小结
2015/11/16 Javascript
AngularJs中Bootstrap3 datetimepicker使用实例
2016/12/13 Javascript
jQuery简单获取DIV和A标签元素位置的方法
2017/02/07 Javascript
node.js + socket.io 实现点对点随机匹配聊天
2017/06/30 Javascript
解决在vue+webpack开发中出现两个或多个菜单公用一个组件问题
2017/11/28 Javascript
基于Vue自定义指令实现按钮级权限控制思路详解
2018/05/23 Javascript
如何在Angular应用中创建包含组件方法示例
2019/03/23 Javascript
Vue分页插件的前后端配置与使用
2019/10/09 Javascript
微信小程序 (地址选择1)--选取搜索地点并显示效果
2019/12/17 Javascript
Vue.js实现立体计算器
2020/02/22 Javascript
Ajax获取node服务器数据的完整步骤
2020/09/20 Javascript
[00:43]TI7不朽珍藏III——幽鬼不朽展示
2017/07/15 DOTA
在Python的Django框架中创建语言文件
2015/07/27 Python
python安装与使用redis的方法
2016/04/19 Python
Python中defaultdict与lambda表达式用法实例小结
2018/04/09 Python
python实现对变位词的判断方法
2020/04/05 Python
python 实现任务管理清单案例
2020/04/25 Python
python学习笔记之多进程
2020/08/06 Python
Mountain Warehouse澳大利亚官网:欧洲家庭户外品牌倡导者
2016/11/20 全球购物
澳大利亚旅游网站:Lastminute
2017/08/07 全球购物
北卡罗来纳州豪华家具和家居装饰店:Carolina Rustica
2018/10/30 全球购物
莫斯科的韩国化妆品店:Sifo
2019/12/04 全球购物
销售工作岗位职责
2013/12/24 职场文书
工厂仓管员岗位职责
2014/01/01 职场文书
综合实践教学反思
2014/01/31 职场文书
2014年健康教育实施方案
2014/02/17 职场文书
金融系应届毕业生求职信
2014/05/26 职场文书
Python 全局空间和局部空间
2022/04/06 Python