Я знаю, что этот вопрос старый, но у меня был тот же вопрос, что и у Фреда. Я нашел ответ, и я хотел бы поделиться им. Нет практической причины не использовать произвольное имя атрибута, отличное от того, что было упомянуто в другом ответе. То есть поставщик или создатель браузера может решить использовать имя для чего-то другого.
Однако в спецификации это не разрешено, хотя в спецификации указано, что имена произвольных атрибутов не должны использоваться, ничто не мешает их использованию. Это похоже на код США для отображения флага, это набор правил, но нет способа обеспечить его соблюдение.
Сравните это с обязательным правилом, например, с одним тегом тела в HTML-документе и т. Д., И вы можете понять, что нет ничего обязательного в использовании произвольных имен атрибутов.
Так что остается, почему вы не должны использовать произвольные имена атрибутов? Поскольку он не пройдет валидатор W3 html, можно утверждать, что социальное давление может возрасти до такой степени, что ваш код будет неприемлемым. Например, может пострадать SEO, будущему работодателю может не понравиться небрежный код и т. Д.
Я, конечно, смутился, когда я свободно использую произвольные имена атрибутов для передачи данных. То, что я остановлю сразу. Теперь я убежден, что использование атрибута data- * сделает мой код более легким для чтения, легким в обслуживании и достаточно чистым для экспертной оценки