Является ли неправильной практикой использование нестандартных атрибутов HTML?
Мне очень удобно устанавливать такие атрибуты, как:
<a stackoverflowId="123">...</a>
И в JavaScript:
var soId = $selectofA.attr('stackoverflowId'); //jQuery
Это хорошая практика? У меня еще не было проблемы с этим.
Ответы
Ответ 1
В HTML 5 вы можете сделать это с помощью атрибута data-*
:
<a id="myDiv" data-stackoverflowId="123">...</a>
Поскольку вы используете jQuery, вы также можете проверить плагин метаданных jQuery. Это позволит вам хранить и анализировать метаданные JSON в атрибуте class, и ваша разметка все равно будет проверяться.
Вы могли бы вставить свои метаданные следующим образом:
<a class="your_class {stackoverflowId: '123'}">...</a>
И извлеките его следующим образом:
var data = $selectofA.metadata();
Ответ 2
Если вы используете атрибуты data-
, это будет, по крайней мере, действительным HTML5. См. Запись в блоге Джона Ресига по теме.
Ответ 3
Я делаю это все время, он отлично работает. Никогда не сталкивался с какой-либо проблемой с этой техникой. Я полагаю, что это не плохая идея, хотя использовать префикс data-
, как это предлагается в некоторых ответах.
Если вы действительно параноик относительно соответствия стандартам, вы можете написать HTML стандартным образом и установить атрибуты в DOM в script. По крайней мере, документ будет проверяться. Но так как чистый результат будет таким же, вы должны быть очень больны, чтобы поддержать этот подход к естественному способу распространения IMO для расширения html по своему усмотрению.
Другой подход заключается в написании пользовательского DTD, который точно определяет, какие расширения вы хотите использовать. Этот подход подробно описан здесь: http://www.alistapart.com/articles/customdtd/
В основном этот подход основан на размещении измененной копии XHTML DTD в каком-либо месте и использовании doctype, который указывает на это настроенное DTD. Вы должны определить дополнительные объявления атрибутов в этом модифицированном DTD, и, видимо, валидатор w3c фактически будет использовать это DTD для проверки.
Однако, я бы не использовал этот подход для обычных интернет-сайтов, когда-либо. Я боюсь, что некоторые браузеры могут зайти так далеко, как пытаться проверить документ против моего dtd, но затем отказаться от ошибки где-то на полпути. Эта обычная технология DTD не очень распространена, я просто не стал бы использовать обычные веб-страницы.
Ответ 4
Если вы используете jQuery (который был вашим примером), вы должны посмотреть на метод данных:
http://api.jquery.com/jQuery.data/