我试图在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;
}
答案 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();