Может ли элемент html иметь несколько идентификаторов? - PullRequest
283 голосов
/ 10 октября 2008

Я понимаю, что идентификатор должен быть уникальным на странице HTML / XHTML.

Мой вопрос, для данного элемента, могу ли я присвоить ему несколько идентификаторов?

<div id="nested_element_123 task_123"></div>

Я понимаю, что у меня есть простое решение с простым использованием класса. Мне просто интересно использовать идентификаторы таким образом.

Ответы [ 17 ]

186 голосов
/ 10 октября 2008

Нет. Из XHTML 1.0 Spec

В XML идентификаторы фрагментов имеют введите идентификатор, и может быть только один атрибут типа ID на элемент. Следовательно, в XHTML 1.0 атрибут id определен как тип Я БЫ. Чтобы убедиться, что XHTML 1.0 документы хорошо структурированы XML документы, документы XHTML 1.0 ДОЛЖНЫ используйте атрибут id при определении идентификаторы фрагментов на элементах вышеперечисленное. Смотрите HTML Рекомендации по совместимости для информация об обеспечении таких якорей обратно совместимы при подаче Документы XHTML как тип носителя текст / html.

178 голосов
/ 16 апреля 2011

Вопреки тому, что говорили все остальные, правильный ответ: ДА

Спецификация селекторов очень ясно говорит об этом:

Если элемент имеет несколько атрибутов идентификатора, все они должны рассматриваться как идентификаторы для этого элемента для целей селектора идентификаторов. Такая ситуация может быть достигнута с использованием сочетаний xml: id, DOM3 Core, XML DTD и знание пространства имен.


Редактировать

Просто для пояснения: да, элемент XHTML может иметь несколько идентификаторов, например

<p id="foo" xml:id="bar">

, но присвоение нескольких идентификаторов одному и тому же атрибуту id с использованием списка через пробел невозможно.

27 голосов
/ 10 октября 2008

Мое понимание всегда было:

  • Идентификаторы одноразового использования и применяются только к одному элементу ...

    • Каждый приписывается в качестве уникального идентификатора (только) одному элементу .
  • Можно использовать классы более одного раза ...

    • Следовательно, они могут применяться к более чем одному элементу , и аналогично, но все же могут отличаться, может быть более одного класса (то есть нескольких классов) на элемент .
26 голосов
/ 10 октября 2008

Нет. Хотя определение из w3c для HTML 4, по-видимому, явно не охватывает ваш вопрос, определение атрибута name и id говорит без пробелов в идентификаторе:

Токены ID и ИМЯ должны начинаться с буквы ([A-Za-z]) и могут сопровождаться любым количеством букв, цифр ([0-9]), дефисов ("-"), подчеркиваний (" _ "), двоеточия (": ") и точки (". ").

17 голосов
/ 10 октября 2008

Нет. Каждый элемент DOM, если он имеет идентификатор, имеет один уникальный идентификатор. Вы можете приблизить это, используя что-то вроде:

<div id='enclosing_id_123'><span id='enclosed_id_123'></span></div>

, а затем используйте навигацию, чтобы получить то, что вы действительно хотите.

Если вы хотите применить стили, лучше использовать имена классов.

16 голосов
/ 11 октября 2008

Вы можете иметь только один идентификатор на элемент, но у вас может быть несколько классов. Но не используйте несколько атрибутов класса, поместите несколько значений класса в один атрибут.

<div id="foo" class="bar baz bax">

совершенно законно.

4 голосов
/ 10 октября 2008

Нет, вы должны использовать вложенные DIV, если хотите идти по этому пути. Кроме того, даже если бы вы могли представить, какую путаницу это может вызвать при запуске document.getElementByID (). Какой идентификатор он собирается захватить, если их несколько?

В слегка связанной теме вы можете добавить несколько классов в DIV. См. Обсуждение Эрика Майерса по адресу

http://meyerweb.com/eric/articles/webrev/199802a.html

3 голосов
/ 10 октября 2008

Нет, у вас не может быть нескольких идентификаторов для одного тега, но я видел тег с атрибутом name и атрибутом id, которые некоторые приложения обрабатывают одинаково.

2 голосов
/ 13 августа 2013

http://www.w3.org/TR/REC-html40/struct/global.html#h-7.5.2

Атрибут id присваивает элементу уникальный (который может быть проверенным парсером SGML).

и

Жетоны ID и NAME должны начинаться с буквы ([A-Za-z]) и могут быть за которыми следует любое количество букв, цифр ([0-9]), дефисов ("-"), подчеркивания ("_"), двоеточия (":") и точки (".").

Таким образом, «id» должен быть уникальным и не может содержать пробел.

1 голос
/ 25 апреля 2015

номер

Сказав это, ничто не помешает вам сделать это. Но вы получите противоречивое поведение с различными браузерами. Не делай этого. 1 идентификатор на элемент.

Если вы хотите несколько присвоений элементу, используйте классы (разделенные пробелом).

...