0

我正在克隆页面上的一个元素,以便在 .each() 循环中对其进行更改,然后将克隆的 div 附加到正文中。

我希望这可能是最快的,所以希望将克隆保持在循环之外。

到目前为止,我的代码是:

var array = [];
var result = $('#result').clone(true, true);

$.each(someOtherArray, function(i,object){

    result.find()....
    // do a bunch of stuff here, changing the clones info to that contained in the someOtherArray

    array.push(result)

 })

 $('body').append(array)

唯一的问题是,“数组”中的每个条目都是相同的(.each() 循环中的最后一个对象)。我该如何解决?

4

2 回答 2

0

如果你保持result在外面,你就会result一遍又一遍地将相同的东西推入阵列中。在每次迭代期间是否对其进行更改都没有关系;您仍然一遍又一遍地将相同的引用推送到数组中。您必须在循环内克隆它,以便每次都获得一个新对象。如果您不想要克隆的开销并且只想重新创建对象,则可以将表示元素的 html 保存到字符串中,然后每次都使用它来创建新元素。

于 2013-11-07T16:46:45.400 回答
0

您可以做的是更改每个克隆的 ID,执行以下操作:

var array = [];
var result = $('#result').clone(true, true);
var c = 0;

$.each(someOtherArray, function(i,object){

    result.attr('id', 'id'+(++c) );
    // here we try to change ID  

    array.push(result)

 })

 $('body').append(array)
于 2013-11-07T16:48:47.330 回答