Я снова и снова слышал, что плохо использовать практику 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 для хранения простых данных в такой ситуации?