1

我正在为具有特定类的所有元素执行每个函数,但在这里它只获取最后一个,而不是将它们全部放入 JSON 数组中。

JS小提琴在这里:http: //jsfiddle.net/MYGCM/1/

这是HTML:

<div id="324834" class="selected_pages">One</div>
<div id="436346" class="selected_pages">Two</div>
<div id="768653" class="selected_pages">Three</div>

jQuery

 var pages = new Object();
 var publish = [];

 $('.selected_pages').each(function () {
 pages.name = $(this).text();
 pages.id = this.id;
 publish.push({
     Pages: pages
 });
 });

 var json_pages = JSON.stringify(publish);

 alert(json_pages)

对此有任何意见吗?

4

3 回答 3

3

对于每个selected_pages您需要创建一个page对象,如下所示

var publish = [];

$('.selected_pages').each(function () {
    var pages = new Object();
    pages.name = $(this).text();
    pages.id = this.id;
    publish.push({
        Pages: pages
    });
});

var json_pages = JSON.stringify(publish);

alert(json_pages)

我建议在这里使用.map()

var pages = $('.selected_pages').map(function () {
    var page = new Object();
    page.name = $(this).text();
    page.id = this.id;
    return { Pages: page};
}).get();

var json_pages = JSON.stringify(publish);

console.log(json_pages)

演示:小提琴

于 2013-08-19T09:54:23.347 回答
1

您可以map()在字符串化之前使用该函数来构建数组。尝试这个:

var pages = $('.selected_pages').map(function() {
    var $el = $(this);
    return { Pages: { name: $el.text(), id = this.id } };
}).get();
var json_pages = JSON.stringify(pages);
于 2013-08-19T10:03:16.833 回答
0

JSFIDDLE:http: //jsfiddle.net/MYGCM/3/

你实际上想要这个:

var pages = new Object();
 var publish = [];

 $('.selected_pages').each(function () {
     var page = new Object();
     page.name = $(this).text();
     page.id = this.id;
     publish.push(page);
 });


pages["Pages"] = publish;

 var json_pages = JSON.stringify(pages);

 alert(json_pages)
于 2013-08-19T09:56:38.423 回答