18

有时我会为我的一些控件添加一个属性。喜欢:

<a href id="myLlink" isClimber="True">Chris Sharma</a>

我知道这不是一个有效的 html。但在某些情况下它对我有帮助。

这被认为是一种不好的做法吗?我的一个朋友说它可以用于 Intranet 环境,但在 Internet 上它可能不会被搜索引擎发现友好。

如果这不是一个好的做法,那么最佳做法是什么?

谢谢

4

6 回答 6

22

如果您使用的是 HTML5 文档类型,那么您可以添加有效的数据属性

因此,以下内容将是有效的

<a href id="myLlink" data-isClimber="True">Chris Sharma</a>
于 2010-04-30T12:28:36.803 回答
9

是的。这被认为是一种不好的做法。您的 HTML(如果是 4.0)将无法成功验证。相反,添加一个像这样的类:

<a href id="myLlink" class="climber" >...</a>

请记住,您可以有多个类:

<a href id="myLlink" class="climber girl pretty" >...</a>

您可以使用 CSS 或 JQuery 根据这些类选择内容,并根据组合选择性地覆盖样式:

a.climber             { color: brown; }
a.climber.girl        { color: red; }
a.climber.girl.pretty { color: pink; }
于 2010-04-30T12:33:01.930 回答
3

这不是最好的做法,也不是好的做法。

我猜你需要它来进行一些 javascript 处理。我通常通过添加以“js”为前缀的自定义“类”属性来解决问题。

另一种解决方案是使用 JQuery 的存储数据/检索数据功能,或任何其他框架的等效功能,这意味着在您生成的 HTML 中回显。

于 2010-04-30T12:32:37.100 回答
2

无效的 XHTML 是一件坏事——主要是因为你不能用有效的方式炫耀XHTML;) 每个主流浏览器和搜索引擎都会愉快地忽略额外的属性。您可以添加一个额外的名称空间以使您的 XHTML 再次有效。

<html xmlns:my="http://example.com">
  <!-- SNIP -->
  <a href id="myLlink" my:isClimber="True">Chris Sharma</a>
  <!-- SNIP -->
</html>

这是完全有效的 XHTML。但是,W3C Validator 仍然会拒绝验证它(我认为)。这是他们的 XML 解析器的一个缺点。对于此类非命名空间感知解析器,my:isClimber仍将被视为isClimber. 但是您现在可以高枕无忧了,因为您知道它是有效的 XML,最后才是最重要的,不是吗;)

于 2010-04-30T12:41:31.220 回答
0

使用jQuery,

存储: $('#element_id').data('extra_tag', 'extra_info');

检索: $('#element_id').data('extra_tag');

这也发布在@ [http://stackoverflow.com/a/16985773/2458978][1]

[1]:如何存储一些 HTML 标签的任意数据

于 2013-06-07T13:57:28.273 回答
-2

我不认为这是不好的做法,它当然非常方便,并且正是您在 xml 环境中所做的。更重要的是您在这些自定义属性中保存的信息的性质以及它们在代码中的使用方式。

更好的选择是以不同的方式保存数据,例如 jQuery 的 data() 功能。

于 2010-04-30T12:31:22.820 回答