を使用appendすると、実際に要素が移動するためです。したがって、コードは$fooのドキュメントに移動し#a、次に から#aに移動していました#b。目的の効果のために、代わりに次のようにクローンを作成できます。この方法では、最初の要素ではなくクローンを追加します。
$(function(){
var $foo = $("<foo>HI</foo>");
$("#a").append($foo.clone());
$("#b").append($foo.clone());
});
htmlfromを追加することもできます$foo。これは、要素自体ではなく、その中の dom のコピーを取るだけです。
$(function(){
var $foo = $("<foo>HI</foo>");
$("#a").append($foo[0].outerHTML);
$("#b").append($foo[0].outerHTML);
});
上記の例は$foo、文字列から作成された単なる jQuery オブジェクトではなく、DOM の要素から作成された可能性が高い、より複雑なシナリオがあることを前提としています。
実際、この方法でこの目的のために単純に作成された場合...最初からそのjQueryオブジェクトを作成する理由はまったくありません。次のように、文字列自体("<foo>HI</foo>")を直接追加するだけです。
var foo = "<foo>HI</foo>";
$("#a").append(foo);
//...