Jquery运行时div';It’打印不正确

Jquery运行时div';It’打印不正确,jquery,Jquery,下面的代码应该从一个json对象获取新闻提要,并以如下的堆叠格式在彼此下方打印新闻提要 2013年 - 1 -新闻1 -新闻2 - 2 -新闻1 -新闻2 2012 - 1 -新闻1 -新闻2 - 2 -新闻1 -新闻2 这是我的饲料 { "currentYear": "2013", "data": [ { "id": "33", "year": "2012", "month": "3", "day": "25",

下面的代码应该从一个json对象获取新闻提要,并以如下的堆叠格式在彼此下方打印新闻提要

2013年 - 1 -新闻1 -新闻2 - 2 -新闻1 -新闻2 2012 - 1 -新闻1 -新闻2 - 2 -新闻1 -新闻2

这是我的饲料

    {
  "currentYear": "2013",
  "data": [
    {
      "id": "33",
      "year": "2012",
      "month": "3",
      "day": "25",
      "sourcename": "WSF",
      "title": "Test",
      "url": "www.test.com",
      "ingress": "data"
    },
    {
      "id": "72",
      "year": "2012",
      "month": "1",
      "day": "20",
      "sourcename": "SF times",
      "title": "Test 1 ",
      "url": "www.gogole.com",
      "ingress": "data"
    }
  ]
}
这是我的jquery

var date = new Date();
var currentYear = date.getFullYear();
var id;
var div_year_id;
var div_month_id;
var tmp_div_year_id;
var i = 1;


$.each(feed.data, function(key, val){

    if(tmp_div_year_id != "#" + val.year) {
        div_year_id     = "#" + val.year;
        div_month_id    = "#" + val.year + "_" + val.month;
    }

    //check if the div for the year exists
    if($(div_year_id).length > 0) {
        console.log("adding year");
        // check if the div for the month exists
        if($(div_month_id).length > 0) {
            console.log("adding month")
            // append to the div year id
        } else {
            //create the month id
            $(div_year_id).append('<div id='+ div_month_id + '></div>');
        }
    } else {
        //create the year id
        $("#news").append('<div id='+ div_year_id + '><div id='+ div_month_id +'><h1>' + val.title + '</h1><p><em>Date</em>: '+ val.year + '-' + val.month + '-' + val.day +'</p><p>' + val.ingress +'</p><p><em>Source</em>: '+ val.sourcename + '</em></p><p><a href="'+ val.url +'" target="_blank">Read full article >></a></p></div>');
        $(div_year_id).append('<div id='+ div_month_id + '></div>');

        tmp_div_year_id = div_year_id;
    }
    console.log(tmp_div_year_id);
    i++;
});
var-date=新日期();
var currentYear=date.getFullYear();
变量id;
var部门年度id;
var div\u month\u id;
var tmp部门年度id;
var i=1;
$.each(feed.data,函数(key,val){
如果(tmp分区年id!=“#”+val.year){
div_year_id=“#”+val.year;
div_month_id=“#”+val.year+“#”+val.month;
}
//检查该年度的div是否存在
如果($(部门年份id).length>0){
控制台日志(“添加年份”);
//检查该月的div是否存在
如果($(div\u month\u id).length>0){
console.log(“添加月份”)
//附加到div year id
}否则{
//创建月份id
$(部门年份id)。附加(“”);
}
}否则{
//创建年份id
$(“#新闻”).append(“+val.title+”日期:“+val.year+”-“+val.month+”-“+val.day+”

”+val.ingres+”

来源:“+val.sourcename+”

>); $(部门年份id)。附加(“”); tmp分区年度id=分区年度id; } 控制台日志(tmp分区年id); i++; });

代码没有为每一年在一个div中正确地堆叠新闻,而是为每一年创建一个新div

问题在于如何创建div;您正在创建它们,包括id中的
#
字符

我在中更改您的代码(查看带有创建年份id的主else语句注释),并在id中不带#的情况下创建它们:

if ($(div_year_id).length > 0) {
    console.log("adding year");
    // check if the div for the month exists
    if ($(div_month_id).length > 0) {
        console.log("adding month")
        // append to the div year id
    } else {
        //create the month id
        $(div_year_id).append('<div id=' + val.month + '></div>');
    }
} else {
    //create the year id
    $("#news").append('<div id=' + val.year + '><div id=' + val.month + '><h1>' + val.title + '</h1><p><em>Date</em>: ' + val.year + '-' + val.month + '-' + val.day + '</p><p>' + val.ingress + '</p><p><em>Source</em>: ' + val.sourcename + '</em></p><p><a href="' + val.url + '" target="_blank">Read full article >></a></p></div>');
    $(div_year_id).append('<div id=' + val.month + '></div>');

    tmp_div_year_id = div_year_id;
}
if($(div\u year\u id).length>0){
控制台日志(“添加年份”);
//检查该月的div是否存在
如果($(div\u month\u id).length>0){
console.log(“添加月份”)
//附加到div year id
}否则{
//创建月份id
$(部门年份id)。附加(“”);
}
}否则{
//创建年份id
$(“#新闻”).append(“+val.title+”日期:“+val.year+”-“+val.month+”-“+val.day+”

”+val.ingres+”

来源:“+val.sourcename+”

>); $(部门年份id)。附加(“”); tmp分区年度id=分区年度id; }
现在,您的if语句按预期工作,可以正常工作了:

您可以准备一个演示吗