HTML 5 explicitly allows custom attributes that begin with data
. So, for example, <p data-date-changed="Jan 24 5:23 p.m.">Hello</p>
is valid. Since it’s officially supported by a standard, I think this is the best option for custom attributes. And it doesn’t require you to overload other attributes with hacks, so your HTML can stay semantic.
Source: http://www.w3.org/TR/html5/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes