我有这样的标记
<table id="document-data">
<tr>
<td>Name</td>
<td>Title</td>
<td>Select Test</td>
</tr>
<tr class="new-document-meta">
<td><input type="text" name="name"></td>
<td><input type="text" name="title"></td>
<td>
<select name="select-test[0]">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
</td>
</tr>
</table>
<a href="#" id="add-row">Add row</a>
现在,您可以看到我有添加行。因此,当我点击add-row时,它只会向表中添加另一行。另外,在另一个添加的行中,name字段将添加这样的行名称 对于第二行,标题的名称标签将成为title_2,如此。 所以我为此制作了我的js
$(document).ready(function() {
$('a#add-row').click(function() {
var Rows = $('table#document-data tr').length;
var ParentClone = $('table#document-data tr.new-document-meta').last();
var ParentHtml = $('table#document-data tr').last();
ParentClone.clone().insertAfter(ParentHtml).find("select").each(function() {
var $item=$(this);
$item.prop("name","select-test["+Rows+"]");
});
$(ParentClone).find('input').each(function() {
$(this).attr('name', $(this).attr('name') + Rows);
});
});
});
这里它适用于select标签,但它不适用于输入标签。那么有人可以帮助我吗?
答案 0 :(得分:0)
试试这个:
ParentClone.find('input').each(function() {
$(this).attr('name', $(this).attr('name') + Rows);
});
不需要围绕它。
答案 1 :(得分:0)
有一些愚蠢的错误因为它不是jquery选择器所以不需要写$
ParentClone.find('input').each(function() {
$(this).attr('name', $(this).attr('name') + Rows);
});
答案 2 :(得分:0)
ParentClone 已经是你在代码中定义的jquery对象:
var ParentClone = $('table#document-data tr.new-document-meta').last();
它不是选择器,因此您不需要执行$(ParentClone)
,因为它已经是jquery对象只是使用它ParentClone.find(....)
ParentClone.find('input').each(function() {
答案 3 :(得分:0)
对于增量名称值,您需要在定义行时将行数转换为字符串,然后在定义name属性时将根据需要进行连接。用这个替换你的行定义:
var Rows = String($('table#document-data tr').length);