使用JSON添加到循环中的选择

时间:2014-05-23 15:15:09

标签: jquery json map append

我正在尝试将JSON映射到特定的HTML结构。我想循环JSON,创建一个包含它应该具有的结构的jQuery对象,然后将它添加到之前启动的集合中。

我正在测试JSON的长度,之后是集合的长度,但是集合在0时出现。我无法理解为什么add()方法不起作用我在这里。

我也尝试使用map()获取我的收藏,但无济于事。

示例JSON

var d = [
    {"NOTICE_ID":"23","TITLE":"fw4r4","BODY":"34t35t","CREATED_BY":"George","TIMESTAMP":"1400856243.1416"},
    {"NOTICE_ID":"22","TITLE":"op","BODY":"op","CREATED_BY":"George","TIMESTAMP":"1400854953.8122"}
]

的jQuery

console.log(d.length)

$sections = $([]);
$.each(d, function(){
    var $sect = $('<section id="notice-'+this['NOTICE_ID']+'" class="type-1" data-time="'+this["TIMESTAMP"]+'"></section>'),
        $head = $("<h2>"+this["TITLE"]+"</h2>").appendTo($sect),
        $date = $("<span>"+this["TIMESTAMP"]+"</span>").appendTo($head),
        $body = $("<div>"+this["BODY"]+"</div>").appendTo($sect);
    $sections.add($sect);
});

console.log($sections.length);

我希望$sections.lengthd.length相同,但始终为0.

JSFiddle

我的目标是最终对这些部分进行排序,然后将它们作为一个附加到容器中。如果我在循环中附加每个元素,它可以正常工作:

JSFiddle

为什么我无法添加到空的jQuery对象?

2 个答案:

答案 0 :(得分:1)

您可以尝试使用$.merge()

$.merge($sections,$sect);

<强> http://jsfiddle.net/darkajax/HGQ9V/

答案 1 :(得分:0)

只需将$ sections设置为标准javascript数组,并使用push()向其中添加新元素:

$sections = new Array();
.
.
.
$sections.push($sect);

http://jsfiddle.net/T4N4f/3/