Хранение произвольной информации в тегах HTML для JavaScript?

Очень общий вопрос.

Я динамически генерирую форму, разбитую на несколько уровней вкладок с помощью HTML/JavaScript.

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

Поле JS выполняет итерацию через каждое поле, сравнивает его значение и при необходимости устанавливает для него класс CSS. Пока что так хорошо.

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

Поскольку мне это очень нравится, я хотел бы сохранить идентификатор элемента вкладки в качестве атрибута где-нибудь в каждом теге HTML-поля (что-то вроде "parentTab" ). Затем функция JS выделяет поле и его элемент "parentTab" (а может быть, и один "parentTab" ).

Мой первый подход заключается в неправильном использовании атрибута title или somethiong для хранения parentTab. Конечно, это грязно. Однако, если я просто добавляю произвольные атрибуты в тег DIV или INPUT, он больше не будет проверяться, и я чувствую меньше, чем безопасный доступ к этим атрибутам - кто знает, как разные браузеры обрабатывают его, и будет обрабатывать его в будущем?

Итак, мой вопрос: есть ли допустимый, совместимый со стандартами способ - атрибут какого-то типа - хранить произвольные данные внутри HTML-тегов для дальнейшей обработки с помощью JavaScript?

Конечно, я мог бы создать массив JS "parentTabs" и сделать с ним. Но сохранение его во входном файле было бы намного более элегантным.

Ответ 1

Вы можете узнать, к какому элементу с вкладками относится поле, написав функцию isChildOf, например: http://jimkeller.blogspot.com/2008/07/jquery-ischildof-is-element-child-of.html

Использование DOM для работы с этим всегда будет более "элегантным", чем дублирование данных в некотором пользовательском формате.

Ответ 2

с введением html5 вы можете использовать атрибуты которые начинаются с data-, и они все равно подтвердят.

<input type="text" name="username" data-parentTab="tab1" value="non-default">

Ответ 3

Атрибут rel часто является большим допустимым выбором для хранения таких данных.

Ответ 4

В jQuery у вас есть API данных для этого. http://docs.jquery.com/Internals/jQuery.data

Если вы не используете jQuery, вы можете добавить свои собственные теги и сохранить что-нибудь в нем. все скажут вам, что это не приятно и т.д., но все крупные веб-фирмы делают это. так что вы окажетесь в отличной компании; -)

Ответ 5

Мне нравится, как John Resig сделал это: тег script с произвольным типом. Его пример касается шаблонов, но вы действительно можете использовать это для чего-либо.