2

据我了解,在 HTML5 中,我们应该开始使用id属性来引用a元素,而不是name属性。这样做的问题是还有一个约束,id每个文档应该是唯一的。

现在,我看到很多情况下您想要引用一组相关a元素(通常在 JS 中)。但是,通过摆脱该name属性,我们被迫要么重用相同的id,要么使用class名称。课程应该是关于演示的,所以如果您a出于与演示无关的原因引用您的 's,这也是一个不完美的解决方案。

我想另一种 HTML5 替代方案是使用类似的东西data-name,但这似乎也很老套。有什么我想念的吗?是否存在完全淘汰 W3 的秘密阴谋name

编辑:对于那些说“课程不一定需要关于演示”的人,我很难找到特定的来源,但我知道我至少已经阅读了几篇强调这一点的博客/文章。我有一种感觉,那些人不是 JS 程序员......

另外:感谢所有解释清楚、深思熟虑的答案!

4

3 回答 3

2

在 HTML5 中,我们应该开始使用 id 属性来引用元素,而不是 name 属性。

idHTML 4 中引入了使用s 链接到。XHTML 1 弃用了该name属性。这是在 HTML 5 中维护的。

这样做的问题是还有一个约束,即每个文档的 id 应该是唯一的。

模棱两可的链接目标没有用!

查看HTML 3.2中元素的属性定义namea

这应该是定义当前 HTML 文档范围的唯一名称的字符串

弃用它以支持id不会添加任何新的唯一性约束。

现在,我看到很多情况下您想要引用一组相关a元素(通常在 JS 中)。

在很多情况下,您希望引用各种不同类型的相关元素。HTML为此提供了类。你甚至可以让一个元素成为其中多个的成员。

课程应该是关于演示的

不,他们不是。类是识别一组元素属于一个组的通用方法。

查看字典中类的定义:

一组或类别的事物,具有某些共同的属性或属性,并通过种类、类型或质量与其他事物区分开来

另请参阅class 属性的 HTML 5 定义,其中没有提到严格用于表示,使用示例之一是 JavaScript。

它们主要与 CSS 一起使用只是因为人们经常希望将样式应用于元素组。

于 2014-09-02T23:24:33.947 回答
2

啊,HTML。你是多么的矛盾。

问题似乎在于name锚的name属性和输入的属性混淆了。在 HTML5 之前的日子里,您需要一种方法来区分传出链接(一个 via href)和内部文档链接(#书签)。

那么,他们将如何做到这一点呢?它在这里指定:http: //www.w3.org/TR/html401/struct/links.html

通过激活这些链接(通过鼠标点击、键盘输入、语音命令等),用户可以访问这些资源。请注意,每个源锚点中的 href 属性使用 URI 指定目标锚点的地址。

链接的目标锚点可以是 HTML 文档中的元素。必须为目标锚点指定一个锚点名称,并且任何寻址该锚点的 URI 都必须包含该名称作为其片段标识符。

HTML 文档中的目标锚点可以由 A 元素(使用 name 属性命名)或任何其他元素(使用 id 属性命名)指定。

是的,给一个锚点一个name属性(作为片段标识符),另一个锚点可以link

a只有在HTML5中,他们决定任何元素(除name.

至于如何选择它们?该class属性非常好(当然,它用于样式,但它是否使它纯粹是展示性的?)

另一个引用(来自 w3c:http ://www.w3.org/TR/html401/struct/global.html#adef-class )

另一方面,class 属性将一个或多个类名分配给一个元素;该元素可以说属于这些类。一个类名可以由多个元素实例共享。class 属性在 HTML 中有几个角色:

*作为样式表选择器(当作者希望将样式信息分配给一组元素时)。

*用于用户代理的通用处理。

于 2014-09-02T23:28:53.103 回答
1

我认为没有理由不使用类或数据属性。

关于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>

这样,您的 data 属性既可以用于绑定事件,可以决定切换哪些元素。

于 2014-09-02T23:24:25.473 回答