【问题标题】:Is using the same id multiple times on a page bad practice even when I am not parsing through the page?即使我没有解析页面,是否在页面上多次使用相同的 id 也是不好的做法?
【发布时间】:2013-01-04 22:38:40
【问题描述】:

我了解在一个页面中多次使用相同的 id 会导致 html 格式错误。使用 jquery 选择器时,只会返回带有 id 的第一个元素,但在我的应用程序中,我不应该遇到这个问题。

我有一个项目视图列表,它们都有一个我需要参考的元素。由于每个项目只能访问自己的$el,因此为某事传递一个 id 选择器不会产生任何冲突(即使页面上有多个)。

我已经模拟了我在小提琴中的意思here

在这个项目中,我没有进行任何页面范围的解析,所以我相信它应该是安全的。有什么理由我不应该这样做吗?

【问题讨论】:

  • 可能没有解析页面,但浏览器会。
  • 问题:你为什么要这样做?回复您的:It's doable,但不要。
  • 有什么理由不能使用类吗?

标签: html backbone.js html-parsing marionette backbone-views


【解决方案1】:

你只知道当前的要求是什么。

最好遵守标准和有效的代码/标记,因为您不知道未来会发生什么。

在这个应用程序中,你很可能最终不得不使用 jQuery,然后你就会遇到麻烦。

以相同方式为多个元素设置样式的解决方案是使用 CSS 类 - 绝对没有理由不这样做,因为它就像使用 id 一样简单。

【讨论】:

    【解决方案2】:

    http://www.w3.org/TR/WCAG20-TECHS/H93.html

    http://www.w3.org/TR/html401/struct/global.html#adef-id

    还有其他东西可以读取您的 HTML 文档,而不仅仅是浏览器。

    根据 HTML 规范,页面上的 id 属性必须是唯一的(这不是网页设计师/开发人员刚刚发明的标准)

    【讨论】:

      【解决方案3】:

      是的,这是不好的做法。 id 应该是对该元素的唯一引用。请改用class

      【讨论】:

        【解决方案4】:

        当然。 HTML、CSS 和 JavaScript 的规范是关于浏览器在遇到特定代码时的行为方式的协议。当你做任何不合规格的事情时,浏览器不会做出太多保证,而且它们做出的保证更少,他们都会同意。

        正如 Oded 在他对该问题的评论中提到的,浏览器会根据您的代码构建一个 DOM 树,对其进行样式设置并渲染它。因此,取决于给定的浏览器如何决定这样做,它们可能会遇到具有相同 id 的多个元素的问题。

        那么,为什么要冒险呢?我想不出任何不能使用类(或什么都没有)来代替 id 的实例。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多