2012-05-30 67 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); // ? 
});