使用类从所有元素获取id和文本并放入JSON数组

时间:2013-08-19 09:53:16

标签: jquery json each

我正在为具有特定类的所有元素执行每个函数,但是这里只获取最后一个,而不是将所有元素都放入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)

关于此的任何输入?

3 个答案:

答案 0 :(得分: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)

演示:Fiddle

答案 1 :(得分: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);

答案 2 :(得分: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)