在我的代码中,我加载了一张图片:
var img = new Image();
img.src= 'image.png';
然后我将此图像附加到这样的div:
$('#divname').append(img);
到目前为止一切正常,但是当我尝试将相同的图像附加到另一个div时,例如:
$('#divname2').append(img);
图像不再存在。我的意思是当我打开页面时,第一个div
包含图像但第二个div
没有。如果我更改appends
的顺序,#divname2
将包含图片。这是一个正常的JavaScript行为还是我做错了什么?是否有可能解决这个问题?
答案 0 :(得分:2)
你需要像这样克隆元素:
$('#divname2').append($(img).clone());
另一种解决方案是直接附加html。
var img = '<img src="image.png" />';
$('#divname').append(img);
$('#divname2').append(img);
答案 1 :(得分:1)
当您通过$('#divname2').append(img)
追加元素时,原始元素会从其父元素中删除,因为img
是对它的引用。请改为添加clone图片:
var $img = $("<img/>", {
src: 'image.png'
});
$('#divname').append($img);
$('#divname2').append($img.clone());
答案 2 :(得分:0)
jQuery .append()方法移动元素。你想要克隆元素。
一种方法:
$('#divname').append(img);
$('#divname2').append($(img).clone());
答案 3 :(得分:0)
是的,这很正常。使用append
或在页面上添加节点的其他方法,使用已存在的元素时,它只移动传递的元素。
本机解决方案是使用cloneNode
:
$('#divname2').append(img.cloneNode());
其他替代方法是将outerHTML传递给append
:
$('#divname2').append(img.outerHTML);