为什么我应该用“data-”来预定我的自定义属性?

所以我使用的任何自定义数据属性应该以“data-”开头:

<li class="user" data-name="John Resig" data-city="Boston" data-lang="js" data-food="Bacon"> <b>John says:</b> <span>Hello, how are you?</span> </li> 

如果我忽略这个,会不会发生什么事? 即:

 <li class="user" name="John Resig" city="Boston" lang="js" food="Bacon"> <b>John says:</b> <span>Hello, how are you?</span> </li> 

我想一个坏的是,我的自定义属性可能会与具有特殊含义(例如, name )的HTML属性发生冲突,但除此之外,只写“example_text”而不是“data-example_text”会出现问题吗? (它不会validation,但谁在乎?)

保留以data- *为前缀的自定义属性有好处。

  1. 它保证在将来的版本中不会有任何与HTML扩展的冲突。 这是一个已经在一定程度上遇到的问题,在HTML5中引入了一些新的属性,现有的网站使用同名的属性,期望不同的,不兼容的自定义行为。 (例如,过去知道input元素的required属性在一些热门网站上发生了一些冲突)

  2. 一旦浏览器支持该function,他们将提供一个更方便的DOM API从脚本访问这些属性。

  3. 它们明确指出哪些属性是自定义属性,哪些属性是标准化属性。 这不仅有助于validation者允许他们允许任何具有数据属性的属性,同时还对其他属性进行有用的错误检查(例如捕获错别字),还有助于使源代码的这一方面更清晰,包括读者谁可以在原作者之后在网站上工作。

根据John Resig的说法,将这些自定义数据属性添加到HTML5 sepcs的全部目的是允许在HTML中embedded自定义数据, 同时仍然有效

如果你不关心validation(如你所说,你的自定义属性不会与nameidstyle等现有的HTML属性相冲突),那么我想你不必使用data-前缀。 但考虑到编写有效的兼容代码不是一个巨大的代价,我不明白为什么你不这样做。