Я снова и снова слышал, что «использовать DOM в качестве базы данных - это плохая практика».
Хотя я в основном согласен с этим мнением, этот вопрос больше касается менее черно-белыхслучаев.Учитывая последние изменения в методах jQuery .data()
и спецификации атрибутов данных HTML5, неужели так плохо вставлять некоторые данные в DOM для удобства?
Например, я недавно реализовалфункция «живого» вычисления для таблицы, полной входных данных, которая выполняет что-то вроде этого:
<table>
<tr>
<td><input type="text"></td>
</tr>
<tr>
<td><input type="text"></td>
</tr>
</table>
jQuery:
$('table').bind('calculate',function(){
var total = 0;
$(this).find('tr').each(function(){
total += $(this).data('value');
});
// display total
});
$('table input').bind('change keyup',function(){
$(this).closest('tr').data('value',$(this).val());
$(this).closest('table').trigger('calculate');
});
Это упрощенный пример, потому что я может пропустить вызовы к .data()
и перейти прямо к входным значениям, но давайте представим немного более сложный сценарий, в котором элементы, кроме входных, влияют на значения строк.
Это неправильноиспользовать DOM для хранения простых данных в такой ситуации?