Подтвердить что ты не робот

Можно ли добавить собственные атрибуты в HTML-элементы?

Возможные дубликаты:
Пользовательские атрибуты - Yay или nay?
Нестандартные атрибуты HTML-тегов. Хорошая вещь? Плохо? Ваши мысли?

В текущем учебном проекте, над которым я работаю, мне нужно добавить атрибут, значение которого будет числом. Сначала я подумал об использовании "id" для этой цели, но ответ показал, что это нехорошо делать.

Хорошо, если я создаю свой собственный атрибут, скажем, "messid" и присваиваю ему числовое значение, такое как "12", "6" и т.д.

Вот почему я хочу сделать это, чтобы вы могли исправить меня, если я делаю это совершенно неправильно: Мне нужно получить доступ к этому номеру в моем JavaScript (используя jQuery). Просто принимать значение атрибута легко, но извлечение числового значения из строки, такой как "m12" или "m6", является болью. (Я новичок в мире JavaScript.)

4b9b3361

Ответ 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 для хранения пользовательской информации в отношении элемента.

Недопустимыми являются следующие атрибуты:

  • IE6 создает дополнительные объекты для хранения пользовательских атрибутов "expando", которые имеют тенденцию к утечке, особенно если они созданы с помощью script.

  • вопросы проверки