我觉得设置任意属性非常方便,例如:
<a stackoverflowId="123">...</a>
而在 JavaScript 中:
var soId = $selectofA.attr('stackoverflowId'); //jQuery
这是一个好的实践吗?我还没有遇到过任何问题。
我觉得设置任意属性非常方便,例如:
<a stackoverflowId="123">...</a>
而在 JavaScript 中:
var soId = $selectofA.attr('stackoverflowId'); //jQuery
这是一个好的实践吗?我还没有遇到过任何问题。
在 HTML 5 中,您可以使用 data-*
属性来实现此操作:
<a id="myDiv" data-stackoverflowId="123">...</a>
由于您正在使用jQuery,您可能还想检查jQuery Metadata插件。它将允许您在类属性中存储和解析JSON元数据,而您的标记仍将验证。
您可以像这样插入元数据:
<a class="your_class {stackoverflowId: '123'}">...</a>
并按照以下方式提取:
var data = $selectofA.metadata();
data-
属性而不会混淆类名。我们现在在规范中有了一种有效的方法来实现这一点 - 让我们不要使用类名,谢谢。http://orangesoda.net/jquery.dataset.html - Matchudata-
属性,它至少是有效的HTML5。请参见John Resig关于此主题的博客文章。
我经常这样做,效果很好。使用这种技术从未遇到过任何问题。不过,像一些答案中建议的那样使用 data-
前缀也不是个坏主意。
如果你真的很担心标准兼容性,你可以以符合标准的方式编写 HTML,并在脚本中设置 DOM 上的属性。至少,文档将会验证。但由于最终结果是相同的,你必须非常痴迷才会选择这种方法,而不是 IMO 自然地扩展适合你的 HTML 的方式。
另一种方法是编写自定义 DTD,定义您想要使用的确切扩展。该方法在此处详细描述:http://www.alistapart.com/articles/customdtd/
基本上,这种方法依赖于在某个位置放置修改后的 XHTML DTD 的副本,并使用指向该自定义 DTD 的 doctype。您将在该修改后的 DTD 中定义额外的属性声明,显然,w3c 验证器实际上将使用该 DTD 进行验证。
然而,我不会在正常的面向互联网的网站上使用这种方法。我担心一些浏览器可能会尝试根据我的DTD验证文档,但最终在中途出现错误。这种自定义DTD技术并不是很普及,我不会冒险用于常规网页。