在for循环中仅创建accordion的内容

时间:2015-03-30 16:37:50

标签: javascript jquery accordion

我试图在for循环中创建手风琴的内容部分,并事先打印标题。这就是我试过的:

$("#right").append(
        "Team Leaders"
        + "<h4>Goals</h4>"
        + "<div><p>"
    );
    for (var i = 0; i < 5; i++) {
        $("#right").append(
            topGoals[i].name
            + ": "
            + topGoals[i].goals
            + "<br>"
        );
    }
    $("#right").append("</p></div>");
    $("#right").accordion();

然而,这并没有奏效。 &#34;目标&#34;部分确实显示为手风琴标题,但其中的内容为空,而for循环中生成的内容出现在手风琴下方。

我之前在for循环中创建过手风琴并且没有遇到任何麻烦,但我从来没有尝试过在循环之外制作标题。我在这里做错了吗?

编辑:

screen.js中的topGoals数组:

var topGoals = getTopFiveGoals(myTeam);

该函数位于functions.js:

function getTopFiveGoals(team) {
var tempTeam = team.players.slice();
tempTeam.sort(function(a, b) {
    return b.goals-a.goals;
});
tempTeam.splice(5, 15);
return tempTeam;
}

1 个答案:

答案 0 :(得分:1)

您正在多次修改DOM树,而是在内存中创建一个dom元素并附加所有子元素。最后将它附加到实时DOM树。在您的代码中,标记未正确关闭,因此无法正确生成。 jQuery会自动关闭未正确关闭的<div><p>等标记。

$("#right").append(
        "Team Leaders"
        + "<h4>Goals</h4>"
    );
    var $div = $("<div></div>");
    for (var i = 0; i < 5; i++) {
        $div.append("<p>"+
            topGoals[i].name
            + ": "
            + topGoals[i].goals
            + "</p><br>"
        );
    }
    $("#right").append($div);
    $("#right").accordion();