HTML自定义标签与标签自定义属性

摘要:
大多数浏览器支持自定义HTML标记和标准标记的自定义属性,许多浏览器直接支持这两种自定义行为。自定义HTML标记在Firefox和Chrome等现代浏览器中,自定义标记很简单,就像标准标记一样,CSS和JavaScript对自定义标记的访问与标准标记相同。123456789<fooid=“idFoo”style=“color:red”数据栏=“ba

大部分浏览器支持自定义HTML标签和为标准标签自定义属性,而且很多浏览器对这两种自定义行为的支持都很直接了当。

自定义HTML标签

在firefox、chrome这种现代浏览器里,自定义标签很简单,就像标准的标签那样写就可以了,而且CSS和JavaScript存取自定义标签和标准标签并无二致。

1
2
3
4
5
6
7
8
9
<foo id="idFoo"style="color:red"data-bar="bar">foo tag!</foo>
<script>
    (function(){
        console.log($("foo").text()); //foo tag!
        console.log($("foo").data("bar")); //bar
        console.log(document.getElementById("idFoo").innerHTML); //foo tag!
        console.log(document.getElementById("idFoo").getAttribute("data-bar")); //bar
    })();
</script>

firefox 21,chrome 27,IE 10表现都十分正常。IE9没有测试,据说也没问题

不过据说在IE8及之前,自定义标签没那么简单,可以通过添加命名空间或者是document.createElement(“自定义标签名称”)来进行自定义HTML标签,不过如果你想在自定义的标签上使用CSS选择器,则必须使用document.createElement(“自定义标签名称”),不管有没有定义过XML命名空间。参见这里

还有人报告一个IE8自定义标签的问题,”事先已document.createElement(‘thetag’),但后续通过innerHTML的方式添加的该元素,IE8是不认的,createElement + appendChild 则可以“。

新的项目已经决定只支持Firefox,Chrome,IE9+版本,IE6,7,8之类的随它去吧。

标签自定义属性

自定义标签属性经常会用到,但是一直是没有规范来约束如何自定义标签属性,导致一些混乱和移植性问题。现在HTML5增加了一个自定义data属性的特性。

很简单,只要自定义属性以data-开头,后面至少跟随一个字符即可,但是不能包含字符U+0041到U+005A (LATIN CAPITAL LETTER A to LATIN CAPITAL LETTER Z)。每个元素可包含多个自定义属性。

这些data-属性在页面上是不显示的,不会影响页面布局和风格,但它却是可读可写的。

jQuery已经支持通过data方法来读取自定义的data-属性,而且支持json格式的属性值,很方便。

1
2
3
4
5
6
7
8
9
10
11
<foo id="idFoo"style="color:red"data-bar="bar"data-obj='{"key1":"value1"}'>foo tag!</foo>
<script>
    (function(){
        console.log($("foo").text()); //foo tag!
        console.log($("foo").data("bar")); //bar
        console.log($("foo").data("obj").key1); //value1
        console.log(document.getElementById("idFoo").innerHTML); //foo tag!
        console.log(document.getElementById("idFoo").innerText); //foo tag!注:firefox 21不支持
        console.log(document.getElementById("idFoo").getAttribute("data-bar")); //bar
    })();
</script>

上面的代码中,在自定义属性中使用json数据需要注意,一定要在外层使用单引号’,内层使用双引号”,如果反过来,firefox和chrome都会报undefined。

自定义标签的innerText属性,firefox 21不支持,输出”undefined”,chrome 27和IE 10输出正常。

也可以通过data(key,value)方式为自定义data属性赋值。

自定义data属性代码在friefox 21,chrome 27,IE 10测试通过。

UPDATE(05/21/2014):
The data- attributes are pulled in the first time the data property is accessed and then are no longer accessed or mutated (all data values are then stored internally in jQuery).

data-特性(attributes)只在第一次读取时获取其值,并且将其缓存到jQuery内部,之后不再读取或改变data-特性。也就是说第一次读取之后,如果通过.attr()方法修改了特性的值,然后再通过data方法读取时仍然是原来的值。

References:
[1]HTML 5 的data-× 自定义属性和 jQuery的data()方法

免责声明:文章转载自《HTML自定义标签与标签自定义属性》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇python中json.loads 返回类型是str 而不是 dictpixijs shader 设置透明度的方法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

data.table包使用总结

装载 作者:kicilove  来源:CSDN  原文:https://blog.csdn.net/kicilove/article/details/76060980?utm_source=copy  data.table包使用总结R中的data.table包提供了一个data.frame的高级版本,让你的程序做数据整型的运算速度大大的增加。data.t...

c#中高效的excel导入sqlserver的方法

将oledb读取的excel数据快速插入的sqlserver中,很多人通过循环来拼接sql,这样做不但容易出错而且效率低下,最好的办法是使用bcp,也就是System.Data.SqlClient.SqlBulkCopy 类来实现。不但速度快,而且代码简单,下面测试代码导入一个6万多条数据的sheet,包括读取(全部读取比较慢)在我的开发环境中只需要10秒...

layui弹窗组件layer之layer.msg提示框学习

layui.layer   弹层之美 layer 至今仍作为 layui 的代表作,她的受众广泛并非偶然,而是这数年来的坚持、不弃的执念,将那些不屑的眼光转化为应得的尊重,不断完善和维护、不断建设和提升社区服务,在 Web 开发者的圈子里口口相传,乃至于成为今天的 layui 最强劲的源动力。目前,layer已成为国内最多人使用的 Web 弹层组件,Git...

GatewayWorker + LayIM实现即时聊天

一、程序目录结构 二、代码展示 附LayIM开发文档:https://www.layui.com/doc/modules/layim.html 1、前端代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8">...

R语言入门:因子的使用

在R语言当中有因子这个特殊的数据结构,和别的编程语言不同,这个数据结构的主要目的是用来分类,计算频数和频率,在后期将R语言用于统计学当中将会十分受用。并且在绘图当中,我们使用同样的数据,将其转化为因子之后,在将这些数据放入绘制图像的函数当中,图像将会变得更加具有可读性。我们有两种方式来创建因子这个数据结构,第一种是在数据框当中自动创建,另一种方式是直接创建...

C# 抓取网页Html源码 (网络爬虫)

http://www.cnblogs.com/wxxian001/archive/2011/09/07/2169519.html 刚刚完成一个简单的网络爬虫,因为在做的时候在网上像无头苍蝇一样找资料。发现了很多的资料,不过真正能达到我需要,有用的资料--代码很难找。所以我想发这篇文章让一些要做这个功能的朋友少走一些弯路。 首先是抓取Html源码,并选择&l...