2012-05-30 66 views
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.

不知道我在做什么错。

回答

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> 
1

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

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

1

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

var ul = $('ul').empty(); 
$.each(obj, function(prop, val) { 
    ul.append("<li>"+val+"</li>"); 
    // or better: 
    $("<li>").text(val).appendTo(ul); // ? 
});