HTML5 data-* 自定义属性
2016-04-08 12:23
561 查看
HTML5中添加了data-*的方式来自定义属性,所谓data-*实际上上就是data-前缀加上自定义的属性名,使用这样的结构可以进行数据存放。使用data-*可以解决自定义属性混乱无管理的现状。
读写格式
追加样式
利用属性追加样式,当然不带data的自定义属性也可以这样做,想id,class等
与Attribute
与有些同学可能会问这和getAttribute/setAttribute除了命名有什么区别吗,我们来看一下
哈哈,看出来没?
两者都把属性设置到了attribute上(废话,要不人家能叫自定义属性)。
也就是说getAttribute/setAttribute可以操作所有的dataset内容,但是dataset内只有操作带有data-前缀的属性(若是age=20,则它就管不了啦)。
so,由此推论dataset内容只是attribute的一个子集,特殊就特殊在命名上了。
后话
那么为什么我们还要用data-*呢,一个最大的好处是我们可以把所有自定义属性在dataset对象中统一管理,遍历啊神马的都哦很方便,而不至于零零散散了,所以用用还是不错的。
比较不好的消息就是data-*的浏览器兼容性情况十分不乐观
IE11+
Chrome 8+
Firefox 6.0+
Opera 11.10+
Safari 6+
其中IE11+简直就是亮瞎小伙伴的眼,看来要想全面使用此属性路漫漫其修远矣
补充JQ操作
参考:http://www.w3school.com.cn/jquery/data_jquery_data.asp
读写格式
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> </head> <body> <div id="dsh" data-age="20"> Hello Word! </div> <script> var dsh=document.getElementById("dsh"); console.log(dsh.dataset.age)//读取是通过dataset对象,使用”.”来获取属性【读取】 dsh.dataset.name="Mr.D";//设置了自定义属性,也是通过dataset对象【设置】 //注意到没,我们在添加或读取属性的时候需要去掉前缀data-* </script> </body> </html>
追加样式
利用属性追加样式,当然不带data的自定义属性也可以这样做,想id,class等
与Attribute
与有些同学可能会问这和getAttribute/setAttribute除了命名有什么区别吗,我们来看一下
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> </head> <body> <div id="dsh" data-age="20"> Hello Word! </div> <script> var dsh=document.getElementById("dsh"); //获取 console.log(dsh.dataset.age) console.log(dsh.getAttribute("data-age")) //设置 dsh.dataset.name="Mr.D"; dsh.setAttribute("data-sex","boy") </script> </body> </html>
哈哈,看出来没?
两者都把属性设置到了attribute上(废话,要不人家能叫自定义属性)。
也就是说getAttribute/setAttribute可以操作所有的dataset内容,但是dataset内只有操作带有data-前缀的属性(若是age=20,则它就管不了啦)。
so,由此推论dataset内容只是attribute的一个子集,特殊就特殊在命名上了。
后话
那么为什么我们还要用data-*呢,一个最大的好处是我们可以把所有自定义属性在dataset对象中统一管理,遍历啊神马的都哦很方便,而不至于零零散散了,所以用用还是不错的。
比较不好的消息就是data-*的浏览器兼容性情况十分不乐观
IE11+
Chrome 8+
Firefox 6.0+
Opera 11.10+
Safari 6+
其中IE11+简直就是亮瞎小伙伴的眼,看来要想全面使用此属性路漫漫其修远矣
补充JQ操作
<!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <script type="text/javascript" src="jquery-2.1.4.min.js"></script> </head> <body> <ul class="tab"> <li data-name="a">主页</li> <li data-name="b">音乐</li> <li data-name="c">个人</li> </ul> <script type="text/javascript"> /*读取*/ console.log($("li:eq(0)").data("name")) /*写入*/ $("li:eq(1)").data("name","bb") console.log($("li:eq(1)").data("name")) </script> </body> </html>
参考:http://www.w3school.com.cn/jquery/data_jquery_data.asp
相关文章推荐
- HTML5 Canvas圆盘抽奖应用
- 使用CSS修改HTML5 input placeholder颜色
- h5嵌入视频遇到的bug及总结---转载
- 怎么处理浏览器记住密码后,把密码回填的问题[需要支持html5的浏览器]
- 无需安装插件 WordPress插入html5视频
- Web开发者推荐的最佳HTML5/CSS3代码生成器
- IE8如何显示html5元素
- h5 range应用 透明度+RGB
- HTML5 LocalStorage 本地存储
- HTML5 history新特性pushState、replaceState
- 00.Web大前端时代之:HTML5+CSS3入门系列~Bug反馈文章
- HTML5 浏览器支持(怎么样让低版本浏览器支持html5?)
- 为 HTML 添加新元素(html5新功能)
- html5学习系列之hi类标签
- HTML5第二节
- HTML5第一讲
- html5的感想
- HTML5.1就要来了
- HTML5客户端存储之 LocalStorage 和 SessionStorage
- css3 html5 form漂亮的表单