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