2011-03-04 45 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