jQuery  複数appendの不可思議な仕様

PC[コンピュータ] JOB[仕事]

jQueryで もっとも不可思議な仕様と思ってるのは
append
で 対象とする要素が複数個あったり、同一要素に連続してappendを実行したりする時の動作が、他の一般的な言語仕様とは非常に異なった動作する事に、私は、混乱していました。

公式マニュアル上では

この方法で選択された要素がDOMの他の場所の単一の場所に挿入された場合、それはターゲットに移動されます(クローンされません)
ただし、ターゲット要素が複数ある場合は、最後の要素を除く各ターゲットに対して、挿入された要素のクローンコピーが作成されます。

表現を変えた説明では

ターゲット要素が複数ある場合、最後の要素を除く各ターゲットに対して、挿入された要素のクローンコピーが作成される

append事例1

このようなコードでボタンを1度押すとどうなるかわかる人は、上記仕様の意味がわかっている人だと思います。

期待する結果は、<ul>配下の<li>の並びは、以下の通りです。
期待する結果:

<li>既存の最初の要素</li>
<li>[ 1 ]回目の追加</li>

実際の結果:

あれま。全く違う結果となりました。
ちょっと解釈が前後しますが、この動きは以下のようになっているととらえられます。
1.追加要素の仕様が作成される。 <li>[ 1 ]回目の追加</li>
2.追加要素がターゲット<ul>に追加される。
3.追加要素(<li>)と同じ要素がターゲット中に存在するので、追加要素のコピーで置き換えられる。
<li>既存の最初の要素</li> ← <li>[ 1 ]回目の追加</li>

なんで こんな変な仕様になっているんでしょうか~

ちなみに この状態でもう1度ボタンを押すと、

追加される個数は正しいのですが、すべての<li>が新要素で置き換えられて行きます。
こんなん、利用価値があるんかいなぁ!

appendは基本的には、一つの命令で、複数個要素を追加したり、コピーしたりする為に使うものだと 私は解釈します。

$(‘<ul>’).append(‘<li>1111</li>,<li>222</li>’)

という記述をしたい場合に利用価値があると思います。

appendTo事例2

うだうだ言ってても仕方ないので、別なアプローチを考えてみます。
基本的には、ある要素の子供要素をプログラムでが~っと複数個作りたい為に、これを解決しておく必要があるので。

上記コードでは、appendToを使ってみました。
実際の結果:

ボタンを一回押すと、ほらっ 綺麗に期待する結果として、追加のみがされました。

更にボタンを2回目に押すと、上記のように2個の要素が追加されました。

jQueryでは、この動作を理解しておかないと、DOM操作がまずできません。
しかし、インターネット上で幾ら調べても、この事を明確に記述している所はありませんでした。

既存要素とは異なる、要素をappendで追加する事例ばかりでした。