如何在Jquery中克隆时先选择

时间:2017-08-31 13:39:41

标签: jquery

我有这段代码

$('.cloneMe').on('click', function(e) {
    var idToAppend = $(this).data('id');
    $(this).data('id', idToAppend + 1);
    $('div.render-form-editlayout-10').clone("").find('[id]').attr('id', function(idx, val) {
        var newId = (this.name == undefined) ? val + idToAppend : this.name + '_' + idToAppend;
        if ((this.name != undefined)) {
          $(this).attr('name', newId);
          console.log('For elements with name the new ID is: ' +
                newId + ' new Name is: ' + newId);
        }
        return newId;
    }).closest('div.render-form-editlayout-10').insertBefore(this);
})

我的jsfiddle是 this

单击加号按钮时,它第一次正常工作,但下次克隆多个时,如何在不更改其他逻辑的情况下修复它?

由于

2 个答案:

答案 0 :(得分:0)

问题在于这一行:$('div.render-form-editlayout-10').clone("")

如果您想选择第一个,请使用first方法:$('div.render-form-editlayout-10').first().clone("")

我更新了您的jsfiddle。但你的jsfiddle中的问题是使用的选择器。我也修好了。你的小提琴与你给定的代码不同,所以我不能说你原来的代码是否有同样的问题。

答案 1 :(得分:0)

检查这个小提琴:https://jsfiddle.net/56sfx5ur/15/

我更新了以下js行:

@Controller

问题是你克隆了整个容器,它最初只包含一组表单字段,但在第二个克隆上它包含2个表单字段集,因此克隆产生了4个表单集等。