From what I understand,在HTML5中,我们应该开始使用id
属性来引用a
元素,而不是name
属性。这样做的问题是,还存在id
每个文档应该唯一的约束。
现在,我看到很多情况下你想要引用一组相关的a
元素(通常在JS中)。通过删除name
属性,我们不得不重复使用相同的id
,或使用class
名称。类应该是关于表示的,所以如果你因为非演示相关的原因引用你的a
,这也是一个不完美的解决方案。
我认为另一种HTML5替代方法是使用像data-name
这样的东西,但这似乎也是hackish。有什么我想念的吗?是否有秘密的W3阴谋完全逐步淘汰name
?
另外:感谢所有经过深思熟虑,经过深思熟虑的答案!
答案 0 :(得分:1)
HTML5中的我们应该开始使用id属性来引用元素,而不是name属性。
在HTML 4中引入了使用id
链接到的内容.XHTML 1弃用了name
属性。这是在HTML 5中维护的。
问题在于,还存在一个约束,即每个文档的id应该是唯一的。
不明确的链接目标无用!
查看definition of the name
attribute for the a
element in HTML 3.2:
这应该是一个字符串,用于定义当前HTML文档范围的唯一名称
以id
为代价弃用它不会添加任何新的唯一性约束。
现在,我发现很多情况下你想要引用一组相关的
a
元素(通常是JS)。
在很多情况下,您希望引用各种不同类型的相关元素。 HTML为此提供了类。你甚至可以让一个元素成为其中一个元素的成员。
类应该是关于演示
不,他们不是。类是将一组元素标识为属于组的通用方法。
查看dictionary中的类的定义:
具有某种属性或属性的一组或一类物品,通过种类,类型或质量区别于其他物品或属性
另请参阅the HTML 5 definition of the class attribute,其中没有提及严格用于演示,其中一个使用示例是使用JavaScript。
他们主要与CSS一起使用只是因为人们经常想要将样式应用于元素组。
答案 1 :(得分:1)
啊,HTML。你是多么不一致。
似乎问题是锚点的name
属性与输入的name
属性混淆。回到HTML5之前的版本,您需要一种方法来区分外发链接(一个通过href
)和一个内部文档链接(#
书签)。
那么,他们将如何实现这一目标?它在此指定:http://www.w3.org/TR/html401/struct/links.html
通过激活这些链接(通过单击鼠标,通过键盘输入,语音命令等),用户可以访问这些资源。请注意,每个源锚中的href属性使用URI指定目标锚的地址。
链接的目标锚点可以是HTML文档中的元素。必须为目标锚点指定锚点名称,并且任何寻址此锚点的URI必须包含该名称作为其片段标识符。
HTML文档中的目标锚可以由A元素(使用name属性命名)或任何其他元素(使用id属性命名)指定。
是的,给锚一个name
属性(作为片段标识符),另一个锚可以link
到。
只有HTML5,他们决定任何元素(a
除外)都可以充当片段标识符(这是有意义的 - 应该只有一个片段可以链接到...) - 这就是为什么他们弃用了name
属性。
至于如何选择它们? class
属性非常好(当然,它用于样式,但它是否纯粹表现?)
另一个引用(来自w3c:http://www.w3.org/TR/html401/struct/global.html#adef-class)
另一方面,class属性为一个元素分配一个或多个类名;该元素可以说属于这些类。类名可以由多个元素实例共享。 class属性在HTML中有几个角色:
*作为样式表选择器(当作者希望将样式信息分配给一组元素时)。
*用于用户代理的通用处理。
答案 2 :(得分:0)
我认为没有理由不使用类或数据属性。
关于name
属性的观点 - 无论如何应该是唯一的!具有相同名称的多个a
元素不是非常有用,因为在URL中链接到它们将变得不明确:www.example.com#my-named-element
。
在我们公司,我们已经探索过如此使用data-behaviors
属性:
<a href='#' data-behaviors='something-cool something-else'>Click Me</a>
在JS中,我们使用:
将事件绑定到它$(".container").on("click", "data-behaviors=~'something-cool'", function(e){
e.preventDefault();
})
我们还探讨了使用命名约定.js-something-cool
的类,这样我们就不会对哪些类用于CSS以及哪些类特定于javascript功能感到困惑。
最后,我们最终更喜欢js-
类名称方案,因为它比data-behavior
版本使用起来更少笨重。但有时我们会根据自己的需要进行混搭。
例如,您可以像这样进行切换功能:
<a href='#' data-toggle='#opened-div'>Click Me</a>
<div id='opened-div'>Some stuff</div>
这样你的数据属性就可以用来绑定事件,和决定切换哪些元素。