3

HTML在标签中存储相关信息是一种好习惯吗?

$("#my_div").append("<span id='info' boo='foo'/>");
$("#info").attr("boo");

我在TAL(in ZPT) 中遇到过这种技术(并且稍微借用了它),您可以在其中使用tal:attributes语句来修改HTML标签(例如,将boo变量的值从后端传递到最终文档中作为属性值呈现):

<span id='info' tal:attributes='boo view/boo'>

结果:

<span id='info' boo='foo'>

这种技术有一天会破坏文档,还是按照规范是安全的?

4

2 回答 2

12

正确的做法是使用 data-* 属性:

http://www.w3.org/TR/2011/WD-html5-20110525/elements.html#embedding-custom-non-visible-data-with-the-data-attributes

切线地,jQuery 也有一个特殊的方法来处理这些。例如:

<p id='string' data-user_name='thedude'></p>
$('#string').data('user_name') => "thedude"
typeof $('#string').data('name') => "string"

<p id='number' data-user_id='12345'</p>
typeof $('#number').data('user_id') => "number"

<p id='boolean' data-user_is_active='true'></p>
typeof $('#boolean').data('user_is_active') => "boolean"

<p id = 'json' data-user='{"name": "the dude", "id": "12345"}'></p>
typeof $('#json').data('user') => "object"
// embedding JSON is extremely useful in my experience
于 2013-09-03T15:39:29.703 回答
1

w3.org允许在 HTML5 中使用 html 标签中的用户自定义数据;

请参阅以下部分:

3.2.3.9 使用 data-* 属性嵌入自定义不可见数据

自定义数据属性是无命名空间中的属性,其名称以字符串“data-”开头,连字符后至少有一个字符 [...]

例子:

<ol>
 <li data-length="2m11s">Beyond The Sea</li>
 ...
</ol>

所以,我会说这是 HTML5 公认的做法。

于 2013-09-03T15:40:22.560 回答