使用非标准HTML属性被认为是不好的做法吗?

时间:2010-01-22 14:39:03

标签: javascript html

我发现设置任意属性非常方便:

<a stackoverflowId="123">...</a>

在JavaScript中:

var soId = $selectofA.attr('stackoverflowId'); //jQuery

这是一个好习惯吗?我从来没有遇到过这个问题。

4 个答案:

答案 0 :(得分:17)

在HTML 5中,您可以使用data-*属性执行此操作:

<a id="myDiv" data-stackoverflowId="123">...</a>

由于您使用的是jQuery,因此您可能还需要查看 jQuery Metadata Plugin 。它允许您在class属性中存储和解析JSON元数据,并且您的标记仍将验证。

您可以像这样插入元数据:

<a class="your_class {stackoverflowId: '123'}">...</a>

并按如下方式提取:

var data = $selectofA.metadata();

答案 1 :(得分:7)

如果您使用data-属性,它至少是有效的HTML5。见John Resig's blog post on the subject.

答案 2 :(得分:1)

我一直这样做,效果很好。这种技术从未遇到过任何问题。我想虽然使用data-前缀并不是一个坏主意,如某些答案中所建议的那样。

如果您对标准合规性非常偏执,可以以标准兼容的方式编写HTML,并在脚本中设置DOM上的属性。至少,该文件将进行验证。但是由于最终的结果是相同的,你必须非常厌恶这种方法来支持IMO自然地扩展html的方法,因为它适合你。

另一种方法是编写一个自定义DTD,它准确定义了您要使用的扩展名。这里详细描述了这种方法:http://www.alistapart.com/articles/customdtd/

基本上,这种方法依赖于在某个地方放置XHTML DTD的修改副本,并使用指向该自定义DTD的doctype。您将在修改后的DTD中定义额外的属性声明,显然,w3c验证器实际上将使用该DTD进行验证。

但是,我不会将此方法用于正常的面向互联网的网站。我担心某些浏览器可能会尝试针对我的dtd验证文档,但在中途放弃某个错误。这种自定义DTD技术不是很普遍,我根本不会抓住常规网页的机会。

答案 3 :(得分:1)

如果您使用的是jQuery(这是您的示例),您应该查看数据方法:

http://api.jquery.com/jQuery.data/