当前位置: 首页 > 面试题库 >

为什么我在自定义属性前添加“ data-”?

宋鸿云
2023-03-14
问题内容

因此,我使用的所有自定义数据属性都应以“ 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”是否有问题?(它不会验证,但是谁在乎呢?)


问题答案:

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

  1. 它保证在将来的版本中不会与HTML扩展发生冲突。HTML5中引入的一些新属性已经在某种程度上遇到了这个问题,现有站点正在使用具有相同名称的属性,并且期望使用不同且不兼容的自定义行为。(例如,众所周知,元素的required属性input过去在某些流行的网站上发生过冲突)

  2. 有一个方便的DOM API HTMLElement.dataset,用于从脚本访问这些属性。现在大多数浏览器都支持它。

  3. 它们清楚地表明哪些属性是自定义属性,哪些属性是标准化属性。这不仅允许验证者允许任何带有data- *的属性,同时仍对其他属性执行有用的错误检查(例如,捕获输入错误),从而帮助验证者,而且还有助于使源代码的这一方面对那些阅读它的人(包括人们)更清晰在原作者之后可能会在网站上工作的人。



 类似资料:
  • 我需要添加自定义数据属性来选择选项。我需要它,因为在更改时,我希望基于选定的属性(而不是值)触发操作 这是我正在使用的代码 例如,当我为数据属性提供静态值时,它可以工作,以下工作没有问题(请注意,data-isocode具有静态值) 然而,当我尝试在数据等码中使用变量时 它向我抛出以下错误 如何使用Angular传递数据属性(如jQuery),并使用FormBuilder获取值?

  • 1. 预置事件 预置事件是百度统计的基础代码能够获取到的基础事件,如页面浏览、元素点击等。系统为预置事件页面浏览、元素点击、session默认关联了预置属性。 这个功能支持您给页面浏览、元素点击、session添加自定义属性。 适用场景: 标识访问状态:是否为登录用户、是否为试用用户 标识访问来源:查看不同来源媒体的用户行为 标识页面分组:按网页作者分组、按页面标题分组、按网页内容分组 该功能替换

  • 问题内容: 背后有不同的原因,但是我想知道如何简单地向JSX中的元素添加自定义属性? 问题答案: 编辑:更新以反映React 16 React 16本机支持自定义属性。这意味着向元素添加自定义属性现在就像将其添加至函数一样简单,如下所示: 先前的答案(第15和更早版本) 当前不支持自定义属性。有关更多信息,请参见此未解决的问题: 解决方法是,您可以在中执行以下操作:

  • 为什么在这里就能看到添加的属性?

  • 1. 预置事件 预置事件是百度统计的基础代码能够获取到的基础事件,如页面浏览、元素点击等。系统为预置事件页面浏览、元素点击、session默认关联了预置属性。 这个功能支持您给页面浏览、元素点击、session添加自定义属性。 适用场景: 标识访问状态:是否为登录用户、是否为试用用户 标识访问来源:查看不同来源媒体的用户行为 标识页面分组:按网页作者分组、按页面标题分组、按网页内容分组 该功能替换

  • 今天我对封装感兴趣,对此我有一个基本问题。我理解为什么需要为私有字段添加setter和getter方法。但我看到为public int编写,字符串是其他的setter和getter。为什么我们需要为公共字段添加属性?我已经可以从任何地方访问公共变量。你怎么能用塞特和盖特控制我?谢谢