Создает ли использование пользовательских атрибутов данных проблемы совместимости браузера? - PullRequest
10 голосов
/ 03 июня 2011

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

Я использую 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"

Есть ли какие-либо существенные достоинства или роковые недостатки для любого подхода?

Ответы [ 3 ]

6 голосов
/ 10 июня 2011

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

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

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

  • изменение идентификаторов может нарушить idrefs

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

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

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

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

С наилучшими пожеланиями, Карстен

3 голосов
/ 10 июня 2011

этот парень говорит, что данные работают на IE6.

0 голосов
/ 08 сентября 2014

Вот соответствующий график на caniusecom: http://caniuse.com/#feat=dataset

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...