我正在使用JQuery clone()方法克隆表单并将表单输入值的“id”属性增量更新为1.
一切都很完美,但我对$(this)
和this
感到好奇。
在clone()中 - >更新输入id
时的each()方法我遇到的问题就像我正在更新值一样:
this.id=newId;
然后它的工作和更新ID属性
但是,如果我使用$(this).attr(oldId,newId)
,那么它无效
如果我使用var old=newId
,那么它也无效
我提到了this和this,但仍然混淆了为什么最后两种方法无效。
完整代码:
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');
});
任何帮助/建议或更好的解决方案都将不胜感激。
答案 0 :(得分:2)
你需要传递你正在改变的属性的名称,而不是它的值,所以这一行
$(this).attr(oldId,newId)
需要成为
$(this).attr('id',newId)