Как сказал @Atticus, это нормально делать в любом случае, и я буду делать оба в зависимости от того, для чего мне нужны данные: если они специально привязаны к элементу, я буду хранить их в элементе;если это более общее для страницы, я передам обратно объект, используя нотацию JSON.
При хранении данных на элементах DOM вам не нужно сохранять их как текст внутри элемента.Вместо этого вы можете использовать data-*
атрибуты .Они действительны с HTML5 и работают во всех браузерах прямо сейчас.Единственным недостатком является то, что если вы используете валидацию как часть вашего рабочего процесса, и вы еще не используете HTML5 для валидации (и это не удивительно, валидатор не совсем готов, что со спецификацией все ещескорее в потоке!), они не проверяются в HTML 4.01 или ниже.Но с браузерами все в порядке, это одна из областей, где HTML5 кодифицирует (и доминирует) текущую практику, а не вводит новшества.