0
  1. 根据许多最近的 HTML 规范,当我们使用自定义属性(即规范中未定义的任何属性)时,我们应该在它们前面加上data-. 但是,我认为没有理由必须这样做(显然,除非您需要完全有效的 HTML)。几乎所有当前的浏览器都正确地忽略了自定义属性,这意味着除了与其他代码中的同名属性之外没有冲突,我们甚至可以使用自定义前缀或类似的东西来忽略这一点(如AngularJS 指令页面上所建议的那样)。如果有的话,还有什么其他好处?这个问题以前至少被问过两次,但都已经很老了。

  2. 我忘记了我在哪里读到的,但是一些指南说自定义 HTML 标签需要破折号,而单个单词标签是无效的。首先,为什么?其次,我们应该这样做,为什么(除了有效之外)?下划线或者camelCase等会有什么问题吗?此外,与现有元素的冲突应该不是问题,如果像使用data属性一样,您可以为它们添加前缀或后缀等。再次参见Angular 指令页面

我敢肯定所有这些问题之前都曾被问过,但我将它们合二为一。这是个好主意(很快,有人在 Meta 上问)?

4

1 回答 1

1

data-*属性有两个优点:

  1. 这是一个约定,意味着其他程序员会很快理解它是一个自定义属性。
  2. 您可以免费获得一个 DOM Javascript API:HTMLElement.dataset。如果您使用 jQuery,它会利用它来填充您找到的键和值.data()

-自定义元素名称的原因有两个基本原因

  1. 这是让 HTML 解析器知道它是自定义元素而不是标准元素的快速方法。
  2. 如果您为 DOM 元素注册自定义 Javascript 原型,您不会遇到添加具有相同名称的新标准元素会导致冲突的问题。

您应该使用自己的自定义元素名称吗?现在它太新了,不要指望它会得到完全支持。假设它确实有效。您必须在额外复杂性问题与收益之间取得平衡。如果您可以摆脱类名,请使用类名。但是,如果您需要一个带有自定义 Javascript DOM 原型的全新元素,那么您可能会有效地使用它。

于 2014-02-08T05:36:59.143 回答