在 for 循环中只创建手风琴的内容

Create only content of accordion in for loop

我正在尝试在 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();

然而,这并没有奏效。 "Goals"部分确实出现了手风琴header,但是里面的内容是空的,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;
}

您多次修改 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();