Использование пользовательского атрибута полезно с нескольких точек зрения, но обязательно избегайте коллизий пространства имен, используя префикс:
<td custom:isDirty="true">
В противном случае это может привести к конфликту с будущими реализациями.
В качестве идентификатора DOM-элемент может иметь настраиваемые свойства, как и любой другой js-объект, что означает, что если вы создаете узлы динамически, вы все равно можете добавлять настраиваемые данные любого типа в ваш элемент, не влияя на проверку.
var element = document.createElement('div');
element.myCustomObject = { foo: "bar", someFunction: function () { alert('foobar'); }};
document.body.appendChild(element);
Конечно, вышесказанное не имеет смысла для людей, которые никогда не создавали скрипты на стороне клиента без таких каркасов, как jQuery, prototype и т. Д ...:)