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?
答案 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"}