Это плохая практика добавлять дополнительные атрибуты к элементам HTML? - PullRequest
18 голосов
/ 30 апреля 2010

Иногда я добавляю атрибут к некоторым своим элементам управления. Как:

<a href id="myLlink" isClimber="True">Chris Sharma</a>

Я знаю, что это недействительный HTML. Но это помогает мне в некоторых случаях.

Это считается плохой практикой? Мой друг говорит, что это нормально для интранет-среды, но в интернете это может оказаться неприемлемым для поисковых систем.

Если это нехорошая практика, каковы лучшие практики?

Спасибо

Ответы [ 6 ]

22 голосов
/ 30 апреля 2010

Если вы используете тип документа HTML5, вы можете добавить data attrbutes , которые действительны.

Таким образом, что-то вроде следующего будет действительным

<a href id="myLlink" data-isClimber="True">Chris Sharma</a>
9 голосов
/ 30 апреля 2010

Да. Это считается плохой практикой. Ваш HTML (если это 4.0) не будет успешно проверен. Вместо этого добавьте класс примерно так:

<a href id="myLlink" class="climber" >...</a>

Помните, что у вас может быть несколько классов:

<a href id="myLlink" class="climber girl pretty" >...</a>

И вы можете использовать CSS или JQuery для выбора материала на основе этих классов и выборочного переопределения стиля на основе комбинаций:

a.climber             { color: brown; }
a.climber.girl        { color: red; }
a.climber.girl.pretty { color: pink; }
3 голосов
/ 30 апреля 2010

Это не лучшая и не хорошая практика.

Полагаю, вам это нужно для обработки javascript. Обычно я решаю эту проблему, добавляя собственный атрибут «class» с префиксом «js».

Другое решение состоит в том, чтобы использовать функциональность JQuery для хранения / извлечения данных или эквивалент любой другой инфраструктуры, которая подразумевает эхо во всем сгенерированном HTML.

2 голосов
/ 30 апреля 2010

Это недопустимый XHTML, и это плохо, в основном потому, что вы не можете похвастаться действительными XHTML;) Хотя все основные браузеры и поисковые системы будут счастливо игнорировать дополнительные атрибуты. Вы можете добавить дополнительное пространство имен, чтобы ваш XHTML снова стал действительным.

<html xmlns:my="http://example.com">
  <!-- SNIP -->
  <a href id="myLlink" my:isClimber="True">Chris Sharma</a>
  <!-- SNIP -->
</html>

Это совершенно правильно XHTML. Однако W3C Validator все равно откажется проверять его (я думаю). Это недостаток их парсера XML. Для таких синтаксических анализаторов, не поддерживающих пространство имен, my:isClimber будет по-прежнему рассматриваться как isClimber. Но теперь вы можете быть спокойны, поскольку знаете, что это действительный XML, и, наконец, вот что имеет значение, не так ли;)

0 голосов
/ 07 июня 2013

Используя jquery,

для хранения: $ ('# element_id'). Data ('extra_tag', 'extra_info');

для извлечения: $ ('# element_id'). Data ('extra_tag');

Это также было опубликовано @ [http://stackoverflow.com/a/16985773/2458978][1]

[1]: как хранить произвольные данные для некоторых тегов HTML

0 голосов
/ 30 апреля 2010

Я не верю, что это плохая практика как таковая, это, безусловно, очень удобно и это именно то, что вы сделали бы в среде XML. Более важным является характер информации, которую вы храните в этих пользовательских атрибутах, и то, как они используются в вашем коде.

Хорошей альтернативой было бы хранение данных по-другому, например, функция data () в jQuery.

...