jQuery .append()从for循环中调用。 (关闭问题?)

时间:2011-03-04 05:37:15

标签: jquery closures append

我有预感,这可能与关闭(或缺乏关闭)有关。

这是我正在使用的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

我认为这是一个关闭问题,对吧?有关方向的任何提示可以解决这个问题吗? (我仍然试图把头盖住)。

1 个答案:

答案 0 :(得分: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/