是否可以使用jQuery更改每行的td.firstChild?
<tr>
<td>
<input name="wrong" />
</td>
<td>
<input name="wrong" />
</td>
</tr>
<tr>
<td>
<input name="wrong" />
</td>
<td>
<input name="wrong" />
</td>
</tr>
到这个
<tr>
<td>
<input name="1" />
</td>
<td>
<input name="1" />
</td>
</tr>
<tr>
<td>
<input name="2" />
</td>
<td>
<input name="2" />
</td>
</tr>
我已尝试过这几种方法,但似乎它并没有为每一行做到这一点。它只是将行数添加到所有这些行。我还设法为表中的每个td.firstChild增加它。
var i = 0;
var rows = $("tr");
for (var i = 0; i < rows.length; i++) {
$("td").each(function () {
this.firstChild.setAttribute("name", i);
});
}
或
$("tr").each(function (i) {
$("td").each(function () {
this.firstChild.setAttribute("name", i);
});
});
有办法解决这个问题吗?
答案 0 :(得分:1)
首先,您的页面上永远不应该有重复的ID。
至于这个问题,您只需要在td
中旅行孩子tr
,而不是一次又一次地循环所有td
标签。
$("tr").each(function (i) {
$(this).child("td").each(function () {
this.firstChild.setAttribute("id", i);
});
});
答案 1 :(得分:1)
尝试:
$("tr").each(function (index, value) {
$("td", value).each(function (index2, value2) {
$("input", this).prop("id", "NewID" + index + index2);
});
});
在这里,您将在行的上下文中获取td,然后使用jQuery的prop方法将新ID应用于其中的输入。