2011-11-01 98 views
1

有人可以告诉我为什么下面的代码不起作用吗?用jQuery动态创建div

for(var i=0; i<4; i++) { 

     var ref = i+1; 

     $("#test").append("<div id='t" + ref + "'>In t" + ref + "</div>"); 
    } 

我的意图是在'test'div内创建子div。 但是,当我检查'$(“#test> div”)。size()'时,它返回'0'。 我也尝试了一些其他的替代方法,包括'动态生成基于可变数量的jQuery的jQuery'中提到的替代方案,但是这也会返回相同的结果'0'。

我正在使用“jquery-1.6.4.js”(也尝试使用“jquery-1.6.2.js”)。

希望有人能指出我做错了什么。

+2

此代码是否存在于(准备)(HTTP: //api.jquery.com/ready/)处理程序? –

+0

如果您仍然卡住,请提供实时链接。 –

+0

@Frederic:不,它不驻留在准备好的处理程序中。 – nyeinzay

回答

3

一切都很好。您可能试图在jQuery加载或DOM准备就绪之前执行该代码,但一旦所有内容都已就位,您就会使用.size()函数进行测试。

请确保您将它全部包装到文档就绪功能中,并且您应该很好。

+0

谢谢,格雷格佩蒂特。现在我知道问题出在我身上,而不是代码:)。我只是在2天前(为我的学校项目)提取javascript和jQuery,仍然需要学习很多东西。 – nyeinzay

2

在您的代码中一切正常。 See here

并参见另一种创建元素here的方法。

+0

谢谢,InviS。看来我必须阅读一些关于javascript和jQurey的更多信息才能正确应用它。 – nyeinzay

+0

根本不是,nyeinzay :) – ValeriiVasin

0

为了更好地实践把$功能的HTML代码

$("#test").append($ ("<div id='t" + ref + "'>In t" + ref + "</div>")); 

并尝试

$("#test > div").length 

$("#test>div").length 
+0

由于您实际上并不需要$这个工作,所以我很好奇(以“我想学习”的方式,而不是一个讽刺的方式),为什么这是一个更好的做法。我知道它在添加之前创建了一个节点,但是如果你没有明确地做,jQuery就不会隐式地做到这一点? –

+0

我其实也不知道。我从SO的K ++多金子帅哥那里得到了它。 :) –

+0

谢谢,Moe Sweet,建议。 – nyeinzay