Использует ли пользовательские атрибуты данных проблемы с совместимостью с браузером?

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

Я использую jQuery 1.6, и мой конкретный сценарий включает ситуацию, когда мне нужно ссылаться на commentId для нескольких действий.

<div data-comment-id="comment-1" id="comment-1">
   <a class="foo"></a>
</div>

Легче извлекать теги данных в jQueryin: $('foo').data('commentId');

Извлечение подстроки из идентификатора кажется немного сложным и может ломаться по той или иной причине: <a id="comment-1"

Есть ли какие-либо значительные достоинства или фатальные недостатки для любого подхода?

Ответ 1

я бы посоветовал в пользу атрибутов данных по следующим причинам:

  • ids должны быть уникальными для документа. поэтому они ограничены в семантике, которую они могут нести.
  • вы можете иметь несколько атрибутов данных для каждого элемента.

и, вероятно, менее релевантны в вашем случае:

  • изменение идентификаторов может привести к поломке idrefs

(однако я не уверен, полностью ли понимаю ваши спецификации, поскольку извлечение идентификатора элемента в jquery столь же тривиально, как получение атрибута data: $('.foo').attr('id');).

вам может быть интересно этот сайт совместимости браузеров для веб-технологий.

Если xhtml является проблемой для вас, вам также может быть интересно, как использовать пользовательские атрибуты данных в xhtml: см. здесь для обсуждения SO и здесь для xhtml-совместимого подхода с использованием пространств имен.

надеюсь, что это поможет,

С наилучшими пожеланиями, carsten