2011-01-28 51 views
1

我是一個JQuery的新手。我想一個對象屬性(陣列形式聲明)追加到html元素像下面jQuery追加HTML元素與變量字符串

HTML:

<div id="container"> 
<p>some text </p> 
<p>some text </p> 
<p>some text </p> 
</div> 

jQuery腳本:

var obj{ 
property : {'apple', 'orange', 'banana'} 
} 

for(i=0; i<=2; i++){ 
$("#container p:eq("+i+")").append(obj.property[i]); 
} 

,並希望能得到這個:

<p>some text apple</p> 
<p>some text orange</p> 
<p>some text banana</p> 

根本沒有附加顯示,雖然我的Firebug控制檯顯示沒有錯誤報告。

我在做什麼錯?另外,是否有任何方法可以用.each()替換for循環,如果這是更好的做法?

謝謝

回答

6

格式不正確你的屬性列表。數字索引的列表文字使用方括號形成,而不是大括號。

您發佈的代碼應爲給您一個語法錯誤。如果不是,它可能根本就沒有被執行。

這裏有一個固定的後續版本:

 

    var obj = { 
    property : ['apple', 'orange', 'banana'] 
    } 

    for(i=0; i<=2; i++){ 
    $("#container p:eq("+i+")").append(obj.property[i]); 
    } 
 
+0

給他添加一個例子... – 0x60 2011-01-28 07:32:29

1

正如另一個答案指出,obj應該被定義爲這樣的:

var obj = { 
    property : ['apple', 'orange', 'banana'] 
} 

for循環的工作,但它似乎更好的做法是使用.each(),如果沒有其他原因只是因爲您不必硬編碼值 - 如果您使用for,那麼如果您更改了屬性數量,則必須更新該循環。下面是我該怎麼做:

$("#container > p").each(function(i) { $(this).append(obj.property[i]); });