我必须从我的网站删除()几个iems,然后追加()他们回来,但当我追加他们时,他们出现在不同的地方,而我希望他们完全一样地显示在他他们曾经的地方。jQuery追加()定位
有没有解决方法?
这里有一个沙箱,随时更新(注意图像的第一追加后如何改变现在的位置):
我必须从我的网站删除()几个iems,然后追加()他们回来,但当我追加他们时,他们出现在不同的地方,而我希望他们完全一样地显示在他他们曾经的地方。jQuery追加()定位
有没有解决方法?
这里有一个沙箱,随时更新(注意图像的第一追加后如何改变现在的位置):
也许有我在这里失踪了一些额外的信息,但为什么完全删除吗?有什么理由不能仅仅使用hide
和show
?
与追加的问题是,你添加的元素作为最后一个父。如果你真的必须完全删除元素出于某种原因,你可以在它的位置放置某种占位符。也许用replaceWith
和一些不可见的元素,以后会被原始元素再次替换。
或者,你可以跟踪最近的兄弟和使用insertBefore
或insertAfter
。
编辑:的insertAfter
一个例子:
var image = jQuery(".image");
var prev;
jQuery("#remove").click(function(){
prev = image.prev();
image.remove();
});
jQuery("#append").click(function(){
if(prev.length === 0){
// element was first
jQuery("#container").prepend(image);
}else{
image.insertAfter(prev);
}
})
EDIT2:的replaceWith
示例:
var image = jQuery(".image");
var replacement = $("<div></div>");
jQuery("#remove").click(function(){
image.replaceWith(replacement);
});
jQuery("#append").click(function(){
replacement.replaceWith(image);
})
在这种特殊情况下,你应该在使用.prepend()
相反,把它放回去所选元素的开头,而不是结尾。
@Natie乙谢谢你,但如何对不同定位的元素? – Wordpressor 2012-01-04 04:21:41
我会为图像做一个绝对位置的CSS。
CSS
.imageStatic
{
position:absolute;
left:20px;
top:45px;
}
的Javascript
var image = jQuery(".imageStatic");
jQuery("#remove").click(function(){
var image = jQuery(".imageStatic").remove();
});
jQuery("#append").click(function(){
jQuery("#container").append(image);
$("#container img").addClass("imageStatic");
})
upvoted,聪明的想法,但这不是我真正需要的,我无法为每个移除的()项目设置绝对位置,特别是当它们使用div网格进行定位时。 – Wordpressor 2012-01-04 15:07:29
您可以使用hide()和show()来达到相同的效果,但元素将保持原位。
基本上是这样的:http://jsfiddle.net/4JQ9m/
我不能使用隐藏,不透明或可见性,我必须完全删除一个元素,因为它正在播放Flash内容:) – Wordpressor 2012-01-04 15:05:25
是的,正如我之前说过的,我无法隐藏()这些元素 - 它们是嵌入式视频,在隐藏后仍然可以播放(您实际上可以听到它们)。我打算玩你的方法,因为它们可能是我一直在寻找的东西。 – Wordpressor 2012-01-04 15:09:40