<tr>
<td><input name="of[1][dsn]" type="text" size="6" /></td>
<td><input name="of[1][gc]" type="text" size="6" /></td>
<td><input name="of[1][ys]" type="text" size="3" /></td>
<td><input name="of[1][ym]" type="text" size="3" /></td>
<td><input name="of[1][yl]" type="text" size="3" /></td>
<td><input name="of[1][s]" type="text" size="3" /></td>
<td><input name="of[1][m]" type="text" size="3" /></td>
<td><input name="of[1][l]" type="text" size="3" /></td>
<td><input name="of[1][xl]" type="text" size="3" /></td>
<td><input name="of[1][xxl]" type="text" size="3" /></td>
<td><input name="of[1][xxxl]" type="text" size="3" /></td>
<td><input name="of[1][xxxxl]" type="text" size="3" /></td>
<td><input name="of[1][xxxxxl]" type="text" size="3" /></td>
<td><input name="of[1][total]" type="text" size="4" /></td>
</tr>
我目前使用jQuery进行克隆,并希望每次重复时将“name”属性中的数字提高+1。 “[1] [dsn]”至[2] [dsn]“等。”我该怎么做?以下是我试图使用的内容,但这已经完全取代了已有的内容。
("input").each(function(index, element){$(element).attr("name", index);});
这就是我用来实际克隆表格行的内容:
var clonedRow = $("table tr:last").clone();
$("table tr:last").clone(true).insertAfter("table tr:last").append(clonedrow);
答案 0 :(得分:1)
好的,你需要这样的东西。首先我们克隆,然后我们将名称中的数字增加一个,然后我们将其应用于每个输入,然后我们将它们插入到DOM中。
var $cloned = $('#selector').clone();
var oldIndex = $cloned.find('input').attr('name').match(/\d+/);
var newIndex = parseInt(oldIndex,10)+1;
$cloned.find('input').each(function(){
var newName = $(this).attr('name').replace(oldIndex, newIndex);
$(this).attr('name', newName);
});
$cloned.appendTo('#something');
这假设要增加的数字始终是名称字符串中的第一个数字(但它可以是多个数字)。
编辑响应您的评论:您需要在其余代码中克隆克隆对象。因此,总是克隆最新的克隆。您应该将代码重写为以下内容:
function clone(){
var $cloned = $('table tr:last').clone();
var oldIndex = $cloned.find('input').attr('name').match(/\d+/);
var newIndex = parseInt(oldIndex,10)+1;
$cloned.find('input').each(function(){
var newName = $(this).attr('name').replace(oldIndex, newIndex);
$(this).attr('name', newName);
});
$cloned.insertAfter('table tr:last');
}
$('p.add-btn').click(clone);
答案 1 :(得分:0)
查看jQuery clone功能,看看是否有帮助。我认为你还需要做一些解析来更新名称。