2011-03-04 47 views
0

我有一種預感,這可能與關閉(或缺乏)有關。jQuery .append()從for循環中調用。 (關閉問題?)

以下是我正在使用jQuery:

function appendToWrapper(wrapper, newNode, loop, version){ 
    newNode 
    .text(loop+version); 
    wrapper 
    .append(newNode); 
} 

var template = $("<div></div>"); 

for(i=0;i<10;i++){ 
    appendToWrapper($('#wrapper'), template, i, 'a'); 
    appendToWrapper($('#wrapper'), template, i, 'b'); 
} 

我想產生是看起來像這樣的輸出:

0a 
0b 
1a 
1b 
2a 
... 
9b 

,但是這是我結束了;

9b 

我認爲這是一個閉合的問題,對不對?任何提示要解決此問題的方向? (我仍然試圖將我的頭圍繞在關閉位置)。

回答

3

您需要爲每次迭代創建一個div。 你的代碼更改爲如下:

function appendToWrapper(wrapper, newNode, loop, version){ 
    newNode 
    .text(loop+version); 
    wrapper 
    .append(newNode); 
} 

for(i=0;i<10;i++){ 
    var template = $("<div></div>"); 
    appendToWrapper($('#wrapper'), template, i, 'a'); 
    appendToWrapper($('#wrapper'), template, i, 'b'); 
} 

工作例如@:http://jsfiddle.net/eMxBV/

+0

「衛生署!就是這樣!謝謝! –

+0

這是一個微不足道的點,DA已經解決了它。但是,爲了得到與DA要求完全相同的輸出,代碼應該是: (i = 0; i <10; i ++)var template = $(「

」); appendToWrapper($('#wrapper'),template,i,'a'); template = $(「
」); appendToWrapper($('#wrapper'),template,i,'b'); } \t 即再次爲'b'重新初始化模板。 – Krishna