HTML5引入的custom data attributes的概念,任何人都可以以定制的,隐性数据附加到脚本编写方面的元素创建。只需使用data-
前缀(例如data-myattr1
或data-myattr2
)创建属性,并将其填入数据。
<div data-myattr1="myvalue1" data-myattr2="myvalue2">Content</div>
这个解决方案的好处是它已经可以在所有主流浏览器中使用了;他们将全部解析未知属性,并将它们暴露在DOM中供JavaScript访问。 HTML5增加了一些访问它们的便捷机制,但尚未实现,但您现在可以使用标准getAttribute
来访问它们。事实上,他们在HTML5中是允许的,这意味着只要您愿意使用标准草案而不是已接受的标准(我不认为data-
属性特别具有争议性,那么您的代码就会被验证),所以如果他们从标准中删除,我会感到惊讶)。
优势这已超过在XHTML命名空间的属性是IE不支持XHTML,那么你就必须实现的东西,假装要使用名称空间的属性,但实际上只使用了:
无效的属性在他们的名字,这是IE将如何解析它们。这比使用class
更好,因为将大量数据放入class
属性中会使其重复很多,并且需要执行额外的解析来提取不同的数据。并且它比自己制作(可以在当前浏览器中工作)要好,因为它明确地定义了以data-
为前缀的这些属性是用于编写脚本的私有数据片段,因此您的代码将在HTML5中进行验证,并且永远不会发生冲突与未来的标准。
用于添加自定义数据为HTML,这是有效的,即使在HTML 4中,加入script
元件具有比text/javascript
(或可用于将几个其他类型中的一种以外的东西type
属性的另一种鲜为人知的技术指定JavaScript)。这些脚本块将被不知道如何与它们配合的浏览器忽略,您可以通过DOM访问它们并按照自己的意愿进行操作。 HTML5 explicitly discusses this usage,但没有什么能够让它在旧版本中无效,并且据我所知,它适用于所有现代浏览器。例如,如果你想使用CSV来定义数据表:
<div>
<script type="text/csv;header=present">
id,myattr1,myattr2
something,1,2
another,2,4
</script>
Content
</div>
这是通过Flash使用SVG Web允许SVG的嵌入在HTML中,与仿真如果浏览器不支持该技术本地SVG。目前,即使支持SVG(Firefox,Safari,Chrome,Opera)的浏览器也不直接以HTML格式支持它,它们只支持直接以XHTML内联(因为SVG元素位于不同的名称空间中)。 SVG Web允许您使用脚本标记将SVG内联到HTML中,然后将这些元素转换为适当的名称空间并将它们添加到DOM,以便它们可以呈现为XHTML。在不支持SVG的浏览器中,它还使用Flash模拟元素的功能。
直到HTML变得普遍,我认为这是最好的解决方案。 – 2010-01-30 23:07:56
我的意思是“HTML 5”,当然:) – 2011-01-14 12:45:03
有没有一个标准的方法来做到这一点,而没有jQuery在现代的JavaScript? – TKoL 2017-10-20 13:57:41