我有一个表,它有多行,我需要替换每个td中每个html元素的name属性。
我的HTML看起来像这样:
<div class="finalizedCollections">
<table>
<tbody>
<tr>
<td>
<input name="[0].CustomerID" value="1"></td>
<td>first100
<input name="[0].CustomerName" value="first100">
</td>
<td>
<select name="[0].CollectionPayType">
<option value="1">1</option>
<option value="2">2</option>
</select>
</td>
<td>data2</td>
</tr>
<tr>
<td>
<input name="[0].CustomerID" value="1"></td>
<td>second100
<input name="[0].CustomerName" value="second100">
</td>
<td>
<select name="[0].CollectionPayType">
<option value="1">1</option>
<option value="2">2</option>
</select>
</td>
<td>data2</td>
</tr>
</tbody>
</table>
现在我必须为[ ]
中的每个输入元素替换tr
中的值。
例如在第一行td
中,输入名称属性应为[0].CustomerID
,后续输入元素为[1].CustomerId
。
我遵循的步骤是:
对于每个tr,检查每个td
中是否存在输入元素,如果存在,则替换[ ]
中的name属性值,从0开始,后续tr替换为+1值< / p>
例如,在第一个tr中,所有td
s中的所有输入值(如果存在)应该具有[0]
,而在下一个tr中它应该是[1]
,依此类推。
任何帮助?
提前致谢。
答案 0 :(得分:2)
检查以下示例(检查元素以检查名称属性)
<强>说明强>
name
属性拆分为.
,获取第二部分并将其存储到变量('nm'
)'nm'
变量编辑(注)
如果您还想更改select
元素,可以将公共类应用于要更改的所有元素,并在此行中选择此类:
var inp = $(this).find('.common_class');
代码
$('table tr').each(function(index) {
var inp = $(this).find('input');
if (inp.length > 0) {
inp.each(function() {
var that = $(this);
var nm = that.attr('name').split('.')[1];
that.attr('name', '[' + index + '].' + nm);
});
}
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script><table>
<tbody>
<tr>
<td>
<input name="[0].CustomerID" value="1"></td>
<td>first100
<input name="[0].CustomerName" value="first100">
</td>
<td>
<select name="[0].CollectionPayType">
<option value="1">1</option>
<option value="2">2</option>
</select>
</td>
<td>data2</td>
</tr>
<tr>
<td>
<input name="[0].CustomerID" value="1"></td>
<td>second100
<input name="[0].CustomerName" value="second100">
</td>
<td>
<select name="[0].CollectionPayType">
<option value="1">1</option>
<option value="2">2</option>
</select>
</td>
<td>data2</td>
</tr>
</tbody>
</table>
&#13;