我遇到了一种情况,我需要根据页面上的某些 id 创建一些 json。
这是一些代码。还有jsfiddle
<ul class="wall_message">
<li id="167" class="msgid">
<div class="wall_msg">text</div>
<div id="129" class="comments">
<div class="wall_img">commemt</div>
</div>
<div id="130" class="comments">
<div class="wall_img">commemt</div>
</div>
</li>
<li id="166" class="msgid">
<div class="wall_img">text</div>
<div class="wall_msg">
<div id="134" class="comments">
<div class="wall_img">commemt</div>
</div>
<div id="136" class="comments">
<div class="wall_img">commemt</div>
</div>
</div>
</li>
</ul>
var jsonObj = []
var jsonObj1 = [];
$('.msgid').each(function(index,val){
jsonObj.push({ids : $(this).attr('id')});
});
$('.comments').each(function(index,element){
jsonObj1.push({id : $(this).attr('id')});
});
console.log(jsonObj);
console.log(jsonObj1);
这将为 jsonObj
返回 2 个对象,为 jsonObj1
返回 4 个对象
我需要以某种方式将它们组合起来,以便结果是:
ids: "167"
comment: {
id: "129"
id: "130"
}
ids: "166"
comment: {
id: "134"
id: "136"
}
我认为我需要在第一个 foreach 中执行另一个 foreach 并将其他 id 添加到 json,但是,我不知道该怎么做。
有什么想法吗?
最佳答案
AndreasAL 答案的更简洁的变体:
var jsonObj = $(".msgid").map(function() {
var obj = { id: this.id };
obj.comments = $(".comments", this).map(function() {
return { id: this.id };
}).get();
return obj;
}).get();
关于jquery - 如何从 div id 创建 json 对象或数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9812927/