Изменение значений JSON в атрибуте data
привет всем! поможите ибо заблудился и не нахожу ответов)
есть элемент
<div id="test" data-json='{"param_1":"value_1","param_2":""}'></div>
и вот такой код:
var foo = $('#test').data('json');
console.log(foo);
if(!foo.param_2) foo.param_2 = 'value_2';
var bar = $('#test').data('json');
console.log(bar);
первый console.log выводит: Object { param_1="value_1", param_2=""} и это понятно, но второй: Object { param_1="value_1", param_2="value_2"} как? почему? ведь data не переназначалась! как будто в переменную foo назначилась ссылка на объект data. вот собственно и вопрос: как избежать такого поведения? P.S. знаю что JSON можно и так достать:
var foo = $.parseJSON($('#test').attr('data-json'));
но тогда, если действительно понадобится его переназначить, так не получится:
$('#test').data('json', new_json_obj);
придётся и новое значение задавать аналогично:
$('#test').attr('data-json', JSON.stringify(new_json_obj));
и вообще такое решение не красиво и убивает всю логику работы с data |
пока писал вопрос придумал вот такой костыль:
var foo = $.extend({}, $('#test').data('json'));
но неужели нету более адекватного и элегантного решения? |
| Часовой пояс GMT +3, время: 11:19. |