2
<ul>
<li></li>  
<li></li>   
<li></li>   
<li></li>   
<li></li>    
</ul>

var obj = { one:1, two:2, three:3, four:4, five:5 };

 var list = $("div");
    jQuery.each(obj, function(i, val) {
  list.html( val);
});

我正在尝试遍历此数组并将每个值附加到列表项中,使其如下所示:

<ul>
<li>1</li>  
<li>2</li>   
<li>3</li>   
<li>4</li>   
<li>5</li>   
</ul>

我的问题是代码只出现了数组中的最后一项:5。

不知道我做错了什么。

4

3 回答 3

2

使用元素的值来定位li它应该放置的位置:

$.each( obj, function( i, v ) {
  $("ul li").eq(v-1).html(v);
});

演示:http: //jsfiddle.net/3RAQC/

结果如下:

<ul>
    <li>1</li>  
    <li>2</li>   
    <li>3</li>   
    <li>4</li>   
    <li>5</li>    
</ul>
于 2012-05-30T06:13:55.600 回答
1

使用 list.append(val) 而不是 list.html(val)

.append() 添加到 html 内容,而 .html 总是用参数替换整个 html 值。

于 2012-05-30T06:15:48.207 回答
1

你既没有一个,也<div>只有一个<ul>。你没有一个数组,而是一个对象(可以称为关联数组,好的)。然后您选择一个元素,并在每次迭代中(重新)设置其内容,以便只出现最后一个值。更好的:

var ul = $('ul').empty();
$.each(obj, function(prop, val) {
    ul.append("<li>"+val+"</li>");
    // or better:
    $("<li>").text(val).appendTo(ul); // ?
});
于 2012-05-30T06:17:13.633 回答