Изменение значений 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, время: 03:27. |