在jQuery中只有一次for循环的问题。 Users是一个包含4个项目的数组,对于每个项目,它应该将该项目作为列表元素附加到userList,这是一个ul。它按预期将第一个元素附加到数组中,但仅包含该元素。不知道为什么它没有贯穿整个阵列?
$(document).ready(function() {
var $currentUser = $('<li class="user"></li>');
for(var i = 0; i < users.length; i++) {
$currentUser.text(users[i]);
$currentUser.appendTo('.userList');
}
//alert(users.length) returns "4".
});
答案 0 :(得分:5)
试试这个
$(document).ready(function(){
for(var i = 0; i < users.length; i++) {
var $currentUser = $('<li class="user"></li>');
$currentUser.text(users[i]);
$currentUser.appendTo('.userList');
}
});
您正在覆盖该元素,而不是为每个用户创建一个新元素。试试上面的代码。
答案 1 :(得分:3)
更多jQuery&#39; ish
$('.userList').append(function() {
return $.map(users, function(user) {
return $('<li />', {
'class' : 'user',
text : user
})
});
});
答案 2 :(得分:1)
您不会为每次迭代添加新的<li>
:
这是一个有效的解决方案:
for (var i = 0; i < users.length; i++) {
$('<li class="user"></li>'
.text(users[i])
.appendTo('.userList');
}
答案 3 :(得分:0)
.text
覆盖之前的文字,看起来只有一位用户
试试这个。
$(document).ready(function(){
for(var i = 0; i < users.length; i++) {
var $currentUser = $('<li class="user"></li>');
$currentUser.text(users[i]);
$currentUser.appendTo('.userList');
}
});
答案 4 :(得分:0)
您在循环外部创建li
,然后尝试为每个用户设置相同元素的文本,以便每次迭代都会覆盖它。你确定最后一个条目不是你看到的吗?