如何多次追加元素?

时间:2014-04-02 12:07:27

标签: jquery

我想多次附加一个元素,如下所示,但它附加了超过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,如此。

3 个答案:

答案 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()方法只需要调用一次。

Fiddle