使用$(this)不使用jquery更新id属性

时间:2016-12-09 15:20:27

标签: javascript jquery html

我正在使用JQuery clone()方法克隆表单并将表单输入值的“id”属性增量更新为1.

一切都很完美,但我对$(this)this感到好奇。

在clone()中 - >更新输入id时的each()方法我遇到的问题就像我正在更新值一样:

this.id=newId;然后它的工作和更新ID属性

但是,如果我使用$(this).attr(oldId,newId),那么它无效

如果我使用var old=newId,那么它也无效

我提到了thisthis,但仍然混淆了为什么最后两种方法无效。

完整代码:

var clonedTemplate = $(".form-section .row:first").clone();
var index = 0;
$("body").on('click', '.add', function () {
    index++;
    var formSection = clonedTemplate.clone().find(':input').each(function () {
        var oldId = $(this).attr('id');
        var newId = oldId + "_" + index;
        this.id=newId; //its working and updating id attribute
        $(this).attr(oldId,newId) // not working
        oldId=newId; // not working
    });
    formSection.end().appendTo('.form-section');
});

任何帮助/建议或更好的解决方案都将不胜感激。

1 个答案:

答案 0 :(得分:2)

你需要传递你正在改变的属性的名称,而不是它的值,所以这一行

$(this).attr(oldId,newId)

需要成为

$(this).attr('id',newId)