我是一个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循环,如果这是一个更好的做法?
谢谢
答案 0 :(得分:6)
您的属性列表未正确形成。使用方括号而不是大括号形成数字索引的列表文字。
您发布的代码应该给您一个语法错误。如果不是,它可能根本就没有被执行。
这是一个固定版本:
var obj = {
property : ['apple', 'orange', 'banana']
}
for(i=0; i<=2; i++){
$("#container p:eq("+i+")").append(obj.property[i]);
}
答案 1 :(得分:1)
如另一个答案所述,obj
应该如此定义:
var obj = {
property : ['apple', 'orange', 'banana']
}
for循环可行,但似乎更好的做法是使用.each()
,如果没有其他原因只是因为您不必对值进行硬编码 - 如果您使用for
,如果你改变了属性的数量,你也必须更新那个循环。我将如何做到这一点:
$("#container > p").each(function(i) { $(this).append(obj.property[i]); });