【发布时间】:2016-07-01 07:32:25
【问题描述】:
我有这个 HTML 代码:
<div id="wrapper">
<div class="row">
<label for="additional_1">Additional #1 :</label>
<input type="text" id="additional_1" name="pnr_remarks_modify[additional][]">
<a href="#" class="addInput">New</a> - <a href="#" class="removeInput">Remove</a>
</div>
</div>
我正在使用以下代码添加(克隆)/删除完整的“.row”元素:
var cloneCntr = 2;
$('#wrapper').on('click', '.addInput', function() {
// clone the div
var row = $(".row").last();
var clone = row.clone();
// change all id and name values to a new unique value
$("*", clone).add(clone).each(function() {
if (this.id) {
this.id = (this.id).slice(0, -1) + cloneCntr;
}
if (this.name) {
this.name = this.name;
}
});
++cloneCntr;
$('#wrapper').append(clone);
});
$('#wrapper').on('click', '.removeInput', function(e) {
e.preventDefault();
var target = $(e.currentTarget);
target.parent().remove();
})
每次我点击New 时,我都会从前一个对象中获得一个克隆,但会更改它的 ID。例如:
首先点击新建
附加#1: 新 - 删除第二次点击新建
附加#1: 新 - 删除但正如您所见,for attr 和标签文本保持不变。我需要将它们更改为(在每个新克隆上):
-
for需要和新ID一样 - 标签文本需要是 Additional # + cloneCntr
但是我不知道如何实现这部分,我可以得到一些帮助吗?
Here is我正在玩这个的 jsFiddle
【问题讨论】:
-
具体有什么问题或疑问?
-
@charlietfl 更新了问题,让我知道现在是否更清楚
-
那么如果我添加一些并从顶部删除其中一些,文本应该说什么?
-
@charlietfl 现在,Additional + (latest+1),例如你加 6 并删除位置 3 的那个,下一个文本应该是 Additional+7,想法是重新排序项目但我认为这比我想象的要复杂
-
您可以从克隆中获取标签并更新 for 属性...
var forControl = $('label', clone).attr('for')将获得您刚刚克隆的标签。
标签: javascript jquery clone