For循环只在Jquery中运行一次

时间:2015-04-08 01:12:10

标签: javascript jquery

在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".
});

5 个答案:

答案 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
        })
    });
});

FIDDLE

答案 2 :(得分:1)

您不会为每次迭代添加新的<li>

这是一个有效的解决方案:

for (var i = 0; i < users.length; i++) {
    $('<li class="user"></li>'
        .text(users[i])
        .appendTo('.userList');
}

https://jsfiddle.net/2abqa5us/1/

答案 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,然后尝试为每个用户设置相同元素的文本,以便每次迭代都会覆盖它。你确定最后一个条目不是你看到的吗?