我发现设置任意属性非常方便:
<a stackoverflowId="123">...</a>
在JavaScript中:
var soId = $selectofA.attr('stackoverflowId'); //jQuery
这是一个好习惯吗?我从来没有遇到过这个问题。
答案 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(这是您的示例),您应该查看数据方法: