Jquery .find并没有查看父元素

时间:2016-02-16 03:34:52

标签: javascript jquery

我试图在答案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。

1 个答案:

答案 0 :(得分:1)

因为.find()将找到克隆元素的所有后代元素,而不是克隆元素本身,因此不更新克隆元素的ID。

$clone.find('[id]').addBack()

您还可以尝试{/ 1}}格式,例如

attr('id', callback)