我想多次附加一个元素,如下所示,但它附加了超过33个项目:
for(var i=0;i<33;i++){
$('.selector').clone().appendTo('#another');
}
问题正在发生,因为它正在克隆并附加所有克隆元素。我该怎么办?
另外,如何为所有.selector添加类,例如some-1,some-2,....,some-32?
var el = $('.selector');
for(var i=0;i<33;i++){
el.clone().appendTo('#another');
$('.selector').addClass('some-'+i);
}
但是它为每个选择器添加了选择器some-1,some-2但是我想为第一选择器做一些-1,为第二选择器做一些-2,如此。
答案 0 :(得分:3)
只克隆第一个:
var el = $('.selector');
for(var i=0;i<33;i++){
el.clone().appendTo('#another');
}
执行此操作还可以在缓存元素时提高性能(每次使用$('.selector').
时,都不必在DOM树中搜索它。)
更新了演示版,同时为每个新元素投放了不同的类。 http://jsfiddle.net/mvpF9/
el.clone().addClass('some-'+i).appendTo("#another");
答案 1 :(得分:1)
仅选择第一个元素
for(var i=0;i<33;i++){
$('.selector').first().clone().appendTo('#another');
}
答案 2 :(得分:1)
如此处的另一个答案中所述,只需缓存原始.selector
,然后克隆它。
要为每个克隆添加一个类,只需使用addClass()
并使用i
的值。
var $selector = $('.selector');
var clones = [];
for (var i=1; i<33; i++) {
clones.push( $selector.clone().addClass( 'someClass' + i )[0] );
}
$(clones).appendTo('#another');
为了提高性能,上面将每个克隆元素添加到一个数组中,并从中构造一个jQuery对象,这样appendTo()
方法只需要调用一次。