有时候我会给我的一些控件添加属性,比如:
<a href id="myLlink" isClimber="True">Chris Sharma</a>
我知道这不是一个有效的html,但在某些情况下它对我有帮助。
这算不上一个好习惯吗?我的一个朋友说在Intranet环境下还好,但在互联网上可能会不被搜索引擎友好地处理。
如果这不是一个好的做法,那什么才是最佳实践呢?
谢谢
<a href id="myLlink" isClimber="True">Chris Sharma</a>
我知道这不是一个有效的html,但在某些情况下它对我有帮助。
这算不上一个好习惯吗?我的一个朋友说在Intranet环境下还好,但在互联网上可能会不被搜索引擎友好地处理。
如果这不是一个好的做法,那什么才是最佳实践呢?
谢谢
<a href id="myLlink" data-isClimber="True">Chris Sharma</a>
是的。这被认为是一种不好的做法。如果你的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; }
<div class="button" isClimber="True" rank="22">Chris Sharma</div>
- zidarsk8<div class="button" data-isClimber="True" data-rank="22">
,但是我建议使用多个类和一个数据元素,因为根据数据元素来设置样式是不可取的(而且会导致标记变得更长):<div class="button climber" data-rank="22">
(再说,如果你真的想要一个按钮,为什么不直接使用 <input type='button' class='climber' data-rank='22'>
呢? - Dave Markledata-
提示,这正是我一直在寻找的。 - zidarsk8这不是最好的做法,也不是好的做法。
我猜你需要它来处理一些JavaScript。通常情况下,我会通过添加自定义的“class”属性来解决问题,并在前面加上‘js’前缀。
另一种解决方案是使用jQuery的存储数据/检索数据功能,或者任何其他框架的等效功能,这意味着在生成的HTML中遍布着echo。
这是无效的XHTML,这是一件坏事 - 主要是因为您不能使用有效的来展示它;) 然而,每个主流浏览器和搜索引擎都可以快乐地忽略额外的属性。您可以添加一个额外的命名空间使您的XHTML再次有效。
<html xmlns:my="http://example.com">
<!-- SNIP -->
<a href id="myLlink" my:isClimber="True">Chris Sharma</a>
<!-- SNIP -->
</html>
这是完全有效的XHTML。然而,W3C验证器仍将拒绝验证它(我认为)。这是他们XML解析器的缺陷。对于这样不支持命名空间的解析器,my:isClimber
仍将被视为isClimber
。但您现在可以放心,因为您知道它是有效的XML,最终这才是重要的,不是吗;)
我认为这并不是什么坏习惯,它确实非常方便,也是在XML环境中可以做到的。更重要的是你在自定义属性中保存的信息的性质以及它们在你的代码中的使用方式。
更好的替代方式是采用不同的数据保存方式,例如使用jQuery的data()功能。