克隆div并在循环中应用多个更改

时间:2013-11-07 16:41:40

标签: jquery

我正在我的页面上克隆一个元素,以便在.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)

唯一的一点是,'array'中的每个条目都是相同的(teh .each()循环中的最后一个对象)。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分: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)