cloneメソッドについて

前置き

今回はjQueryのclone()メソッドです。

例によって自分用のメモです。

メソッドの概要

例えば以下のようなhtml要素があったとして、

<div id="parent">

  <div id="child_1">子要素1です</div>

  <div id="child_2">子要素2です</div>

</div>

<div id="anotherFamily"></div>

 

const thirdChild = $('#child_1').clone()

とするとdiv#child_1のコピーがthirdChildという定数に格納されます。

 

例えばこの状態で

$('anotherFamily').html(thirdChild)とすると、上記の例が

<div id="parent">

  <div id="child_1">子要素1です</div>

  <div id="child_2">子要素2です</div>

</div>

<div id="anotherFamily">

    <div id="child_1">子要素1です</div>

</div>

のように変わります。

補足

今の例ですが、clone()を用いずに

const thirdChild = #child_1

$('#anotherFamily').html(thirdChild)

とするとどうなるでしょうか?

 

一見、上記の例と変わらなさそうに見えますが、実は以下のようになります。

 

<div id="parent">

  <div id="child_2">子要素2です</div>

</div>

<div id="anotherFamily">

    <div id="child_1">子要素1です</div>

</div>

 

なんと、取得した#child_1が移動してしまうのですね。

 

コードを組んだ際に都度ビューで確認していれば問題ないと思いますが、今後気をつけなければならないと思いました。