需要$ .each函数来改变json字符串

时间:2015-03-01 06:57:35

标签: javascript jquery json

myData = {"a1":"tom","a2":"dick","a3":"harry"};  

    <div id="a1">D1</div>
    <div id="a2">D2</div>
    <div id="a3">D3</div>  

我用:

  $.each( myData, function( key, value ) {
     $( "#" + key ).text(  value );
  });

将json值加载到具有相应id的div中。但我现在想将div内容移动到相应的json值,如下所示:

    myData.a1 =  $( "#a1" ).text();  

确实导致:

{"a1":"D1","a2":"dick","a3":"harry"};  

但我需要一个$ .each函数来迭代集合,类似于我的加载函数。有任何想法吗?也许是JSFiddle?

4 个答案:

答案 0 :(得分:1)

获取div并迭代它们:

var myData = { /* ... */ };
$("div").each(function () {
    var id  = $(this).attr("id");
    var val = $(this).text();
    myData[id] = val;
});

然而,您必须更加具体而不仅仅是$("div")

答案 1 :(得分:1)

在要获取文本的每个项目上放置一个公共类名称,并将id作为密钥保留,就像使用它一样。假设您使用了类名“myDataCommon”。然后,您可以使用这样的代码来获取所有值并将它们放入一个id为关键字的对象中:

var data = {};
$(".myDataCommon").each(function() {
    data[this.id] = $(this).text();
});

答案 2 :(得分:0)

你的意思是:

myData = {"a1":"tom","a2":"dick","a3":"harry"}; 

$.each( myData, function( key, value ) {
    myData[key] =  $("#"+key).text();  
});

答案 3 :(得分:0)

小提琴:http://jsfiddle.net/q1w1fk5t/

<强> HTML:

<div id="a1">D1</div>
<div id="a2">D2</div>
<div id="a3">D3</div>

<强> JQuery的:

var myData = {};

$("div").each(function () {
    myData[$(this).attr("id")] = $(this).html();
});

alert(JSON.stringify(myData));

<强>输出:

您将获得一个JSON字符串作为输出。

{"a1":"D1","a2":"D2","a3":"D3"}