我试图在答案https://stackoverflow.com/a/2977114/327247之后克隆并更改表格中所有行的ID 但是下面的代码并没有改变第一个id:行id。 javascript是
var $clone = $("#RowPly-R1-P1");
$clone.find('[id]').each(function() {
var $th = $(this);
var newID = $th.attr('id').replace(/-P\d+$/,
function(str) { return "-P"+i; });
console.log(newID);
$th.attr('id', newID);
});
console.log($clone);
$clone.appendTo($tableToModfiy);
$clone.after($("RowPly-R1-P1"));
而html是
<tbody id="tblPlayers">
<tr id="RowPly-R1-P1">
<td>1</td>
<td>
<div class="input-group">
............
</div>
</td>
</tr>
</tbody>
该行内部的所有ID都已成功更改。我无法理解为什么find不会更改第一个ID。
答案 0 :(得分:1)
因为.find()
将找到克隆元素的所有后代元素,而不是克隆元素本身,因此不更新克隆元素的ID。
$clone.find('[id]').addBack()
您还可以尝试{/ 1}}格式,例如
attr('id', callback)