1

我正在为 Jquery 克隆而苦苦挣扎。我可以克隆一行 HTML,但我不知道如何克隆一个块。

我有这个块:

<div class="item-name">
    <label for="id_form-0-name"></label>
    <select id="id_form-0-name" name="form-0-name"></select>
</div>

而且我需要生产更多的两个块,每次更改新块的属性以反映其位置。

<div class="item-name">
    <label for="id_form-1-name"></label>
    <select id="id_form-1-name" name="form-1-name"></select>
</div>
<div class="item-name">
    <label for="id_form-2-name"></label>
    <select id="id_form-2-name" name="form-2-name"></select>
</div>

关于我必须做什么才能获得该输出的任何线索?

4

3 回答 3

3

试试这个:

$('.item-name').clone().insertAfter('.item-name')

来源:

1)关于clone() http://api.jquery.com/clone/
2)关于insertAfter http://api.jquery.com/insertAfter/

对于您的其他要求

尝试这样的事情:

$clone = $('.item-name:last').clone();
for (i = 1; i < 999; i++) {
    if ($('.item-name select[id=id_form-'+i+'-name]').attr('id') != 'id_form-'+i+'-name') {
        $clone.find('select').attr('id', 'id_form-'+i+'-name');
        $clone.find('select').attr('name', 'form-'+i+'-name');
        $clone.find('label').attr('for', 'id_form-'+i+'-name');
        break;
    }
}
$clone.insertAfter('.item-name:last');
于 2013-01-10T18:08:00.663 回答
1

试试这个(克隆两次):

$('.item-name:last').clone().insertAfter($('.item-name:last')).clone().insertAfter($('.item-name:last'));
于 2013-01-10T18:08:05.443 回答
0

工作演示

所以克隆它并增加属性。您可以在一行中完成,但要使其易于遵循:

var clone=$('.item-name:last').clone();
clone.insertAfter('.item-name:last');
var attrs='id_form-' + clone.index() + '-name';
clone.find('label').attr('for', attrs);
clone.find('select').attr({id: attrs, name: attrs});
于 2013-01-10T18:32:13.940 回答