質問: jQuery.makeArray(document.querySelectorAll("#divforvideos video")); $("#divforvideos").empty(); $("#divforvideos").append(''); $("#divforvideos").append(''); $(".random").append($(arr)); $(".under").append($(arr)); }); ``` よろしくお願いいたします。
回答: まず1行目、なぜjQueryあるのにjQueryで取得しないんですか? `var arr = $("#divforvideos video");` 次に本題。 `.append()`は元の要素を移動します。 コピーしたいときは`.clone()`してから`.append()`してください。 元の親要素に対して`.empty()`してあったので、追加先両方とも`.clone()`で入れてます。 なので、ここで保持している`arr`の要素たちはどこにも追加されずに保持されてます。 `arr`の中身いじってもどこにも反映されないのでご注意を。 ちなみに`.clone()`そんなに軽い処理じゃないので複雑な構造の大量の要素を一気にコピーしようとすると特にIE11とかでめっちゃ重いです。 例示のコード程度なら大したことはないですが。 で、`.clone()`には引数があって、`true / false`を指定できます。 `true`を指定すれば、コピー対象の要素たちに登録されているイベントハンドラもコピーしてくれます。 引数渡さなかったらイベントハンドラはコピーしません。 ``` $(function() { var arr = $("#divforvideos video"); $("#divforvideos").empty(); $("#divforvideos").append(''); $("#divforvideos").append(''); $(".random").append(arr.clone()); $(".under").append(arr.clone()); }); ```