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

Needing $.each function to alter json string

本文关键字:json 字符串 each 函数 需要      更新时间:2024-07-04
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?

获取div并迭代它们:

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

但是,您必须比简单的$("div")更具体。

要获取文本的每个项目上放置一个通用类名,并将 id 保留为键,就像您拥有它一样。 假设您使用了类名"myDataCommon"。 然后,您可以使用这样的代码来获取所有值,并将它们放入以 id 为键的对象中:

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

小提琴: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"}

你的意思是:

myData = {"a1":"tom","a2":"dick","a3":"harry"}; 
$.each( myData, function( key, value ) {
    myData[key] =  $("#"+key).text();  
});