我正在我的页面上克隆一个元素,以便在.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()循环中的最后一个对象)。我该如何解决这个问题?
答案 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)