2011-11-01 179 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