Подтвердить что ты не робот

Идентификатор должен быть уникальным на всей странице?

Я использую jQuery, и мне просто интересно, идентификатор должен быть всегда уникальным на всей странице? Класс, я знаю, может повторяться столько раз, сколько вам нравится, как насчет ID?

4b9b3361

Ответ 1

Да, он должен быть уникальным.

HTML4:

https://www.w3.org/TR/html4/struct/global.html#h-7.5.2

Раздел 7.5.2:

id = name [CS] Этот атрибут присваивает имя элементу. Это имя должно быть уникальным в документе.

HTML5:

https://www.w3.org/TR/html5/dom.html#element-attrdef-global-id

Атрибут id указывает уникальный идентификатор своего элемента (ID). Значение должно быть уникальным среди всех идентификаторов в домашнем поддереве элемента и должно содержать хотя бы один символ. Значение не должно содержать пробелов.

Ответ 3

Браузеры были снисходительны к этому (много лет назад, когда css был молод) и позволяют использовать ID более одного раза. Они стали более строгими.

Однако идентификатор yes должен быть уникальным и использоваться только один раз.

Если вам нужно использовать css-форматирование более одного раза, используйте CLASS.

Ответ 4

Январь 2018, здесь Youtube HTML, вы можете видеть, что id = "button" id = "info" дублируются.

введите описание изображения здесь

Ответ 5

Технически, по стандартам HTML5 идентификатор должен быть уникальным на странице - https://developer.mozilla.org/en/DOM/element.id

Но я работал над чрезвычайно модульными сайтами, где это полностью игнорируется и работает. И это имеет смысл - самая удивительная часть.

Мы называем это "компонентизация"

Например, у вас может быть компонент на вашей странице, который является неким виджетом. Внутри него есть свои уникальные идентификаторы, например, кнопка "ОК".

Как только на странице появятся многие из этих виджетов, у вас будет технически неверный HTML. Но имеет смысл скомпоновать ваши виджеты так, чтобы каждый из них внутренне ссылался на свою собственную кнопку ok, например, если для поиска из своего корня используется jquery, это может быть: $widgetRoot.find("#ok-button")

Это работает для нас, хотя технически идентификаторы не должны использоваться вообще, поскольку они не уникальны.

Как упомянуто выше, даже YouTube делает это, так что это не так уж и плохо.

Ответ 6

Да, идентификаторы уникальны. Класс не является.

Ответ 7

Идентификаторы всегда должны быть уникальными.

У каждого есть уникальный идентификационный номер (например, номер социального страхования), и в социальном классе есть много людей

Ответ 8

Это в основном весь смысл идентификатора.:) Идентификаторы специфичны, их можно использовать только один раз на странице. Классы могут использоваться как довольные.

Ответ 9

С помощью Javascript вы можете ссылаться только на один элемент, используя ID. Селектор document.getElementById и jQuery $ возвращает только первый элемент. Поэтому не имеет смысла использовать один и тот же идентификатор для нескольких элементов.

Ответ 10

Ответы на один и тот же вопрос можно найти на https://softwareengineering.stackexchange.com/info/127178/two-html-elements-with-same-id-attribute-how-bad-is-it-really.

Один лакомый кусочек, не упомянутый выше, заключается в том, что если существует одна идентичная id одна и та же страница (что происходит, даже если оно нарушает стандарт):

Если вам нужно обойти это (это печально), вы можете использовать $("*#foo"), который убедит jQuery использовать getElementsByTagName и вернуть список всех согласованных элементов.