【问题标题】:What are some good reasons for not using custom tag attributes such <a my_att='...'>不使用自定义标签属性的一些充分理由是什么,例如 <a my_att='...'>
【发布时间】:2025-12-15 05:45:01
【问题描述】:

我这样做主要是为了将数据存储在标签中,因为我从 php 中回显它,然后使用 jQuery 到 $(..).attr('my_att') 来检索它。

到目前为止,它还没有造成任何问题,但是否有充分的理由(除了无效之外)为什么我们不应该这样做?

【问题讨论】:

  • 你知道data attributes吗?
  • "...但是有充分的理由(除了无效之外)为什么我们不应该这样做吗?" ......这就是微软的 Internet Explorer 开发人员几年前所说的......:D

标签: javascript custom-attributes


【解决方案1】:

因为您可以改用有效的自定义属性:

<div data-customer-id="3" class="customer"> [...] </div>

如果您在属性前面加上 data-,它们就是有效的 HTML。不只是编写自己的属性的原因是它们可以在将来继承意义。显然这在某些情况下不太可能(例如“客户名称”),但使用前缀是 safter。

另一个额外的好处是您非常清楚自己的意图;当您尝试标记与特定输入字段关联的模型时,其他开发人员不会认为您打算写 kind="text" 而不是 type="text"

【讨论】:

    【解决方案2】:

    我更喜欢 HTML5 data attributes 那样做。

    如果您使用的浏览器本身不支持数据属性,则可以使用jQuery.data() 获取属性。

    例如:

    <a href="#" id="MyLink" data-address="1600 Pennsylvania Ave, Washington, DC">
      My Address
    </a>
    

    然后我可以通过$('#MyLink').data('address') 找回价值。

    【讨论】:

      【解决方案3】:

      我主要看到两个避免使用自定义属性的原因:

      1° 如果浏览器对 HTML 标准非常严格,他可以简单地拒绝显示不符合 DTD 的页面,或者更糟的是,尝试显示您的页面时崩溃。

      2° 浏览器可以选择从元素中去除未知属性。

      当然,实际上,没有浏览器可以做这些事情,但是谁能说未来会有什么新的实现呢?

      制定标准是有原因的,遵循它们总是一个好主意。尤其是当 HTML5 让您如此轻松地创建自定义属性时。

      【讨论】: