因为 usingappend
实际上会移动元素。因此,您的代码正在$foo
移入文档中#a
,然后将其#a
移至#b
. 您可以像这样克隆它以获得所需的效果 - 这样它会附加一个克隆而不是初始元素:
$(function(){
var $foo = $("<foo>HI</foo>");
$("#a").append($foo.clone());
$("#b").append($foo.clone());
});
您还可以附加html
from $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);
//...