Можно ли добавить собственные атрибуты в HTML-элементы?
Возможные дубликаты:
Пользовательские атрибуты - Yay или nay?
Нестандартные атрибуты HTML-тегов. Хорошая вещь? Плохо? Ваши мысли?
В текущем учебном проекте, над которым я работаю, мне нужно добавить атрибут, значение которого будет числом. Сначала я подумал об использовании "id" для этой цели, но ответ показал, что это нехорошо делать.
Хорошо, если я создаю свой собственный атрибут, скажем, "messid" и присваиваю ему числовое значение, такое как "12", "6" и т.д.
Вот почему я хочу сделать это, чтобы вы могли исправить меня, если я делаю это совершенно неправильно:
Мне нужно получить доступ к этому номеру в моем JavaScript (используя jQuery). Просто принимать значение атрибута легко, но извлечение числового значения из строки, такой как "m12" или "m6", является болью. (Я новичок в мире JavaScript.)
Ответы
Ответ 1
Об этом много говорили:
В конце дня я нахожусь в лагере, который считает, что атрибуты данных - лучший способ. Они вводятся в HTML5, чтобы избежать конфликтов имен. По сути, если вы хотите сохранить какие-либо данные, связанные с вами, просто добавьте "data-" в имя атрибута:
<div class="user" data-userid="5"></div>
Единственный аргумент в пользу всего этого заключается в том, что ваш XHTML не будет проверять, но я честно не забочусь об этом. (Правильно, я это сказал)
Ответ 2
В HTML 5 вы можете добавить любой атрибут, начинающийся с data-
, так, например, <div data-messid="12">
ОК.
HTML 4 и XHTML 1 не будут проверяться, если вы добавите свой собственный атрибут, но кроме того ничего плохого не произойдет, если вы выберете имя атрибута достаточно уникальным (чтобы он не противоречил какому-либо текущему или будущему атрибуту HTML).
Ответ 3
Просто, чтобы вы знали, вы можете легко извлечь идентификатор из строки, такой как m12 или m6, я бы сделал это следующим образом:
//name the IDs m_12, m_3 etc
var number = $('#someElement').attr('id').split('_')[1];
Или, скажем, у вас есть набор ссылок с номерами в ID, как указано выше, и все ссылки имеют класс clickMe
:
$('a.clickMe').click(function() {
alert($(this).attr('id').split('_')[1]);
});
Ответ 4
Я использую пользовательские атрибуты, и поскольку они поддерживаются всеми браузерами, которые я проверил, я думаю, что неплохо их использовать. Вы также можете использовать собственные HTML-теги для имитации HTML5 с некоторым взломом IE, поэтому почему бы не использовать атрибуты, если им не нужны хаки?
В любом случае, вы можете прочитать аналогичную дискуссию здесь:
Пользовательские атрибуты - Да или нет?
Ответ 5
Это не окончательный ответ, но, чтобы сделать это в прошлом, я могу сказать, что это не только хорошо работает, но и кросс-браузер.
Ответ 6
Если вы используете jQuery, вы можете использовать .data для хранения пользовательской информации в отношении элемента.
Недопустимыми являются следующие атрибуты:
Ответ 7
Нет - это не.