2011-01-28 92 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]); });