javascript – 从DOM中删除元素并将它们添加到它们所在的位置

前端之家收集整理的这篇文章主要介绍了javascript – 从DOM中删除元素并将它们添加到它们所在的位置前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个模态窗口.我想要发生的是当模态打开时从页面删除某些元素,并将它们添加回模态关闭后的正确位置.我不想做display:none,因为只隐藏它们,我需要将它们实际从页面删除.所以我有一些jQuery删除并在一个计时器之后添加它们只是为了测试…

更新:通过对代码的这些添加,它现在抓取元素,然后在相同的元素之后将其添加回来.问题是,如果该元素也被删除了怎么办?然后它不会重新加入!另外,javascript事件处理程序不会丢失吗?我正在开发一个插件,因此它应该尽可能少地干扰网站,但是3d元素在Safari中有一个无法绕过的错误.

关于如何在不干扰人们网站的情况下暂时删除3d元素的任何想法?

$3delements = $('*').filter(function(){return $(this).css('-webkit-transform-style') == 'preserve-3d'});
$3delementsposition = $3delements.prev()

//On modal open
$3delements.remove();

//On modal close
$3delementsposition.after($3delements);

问题是,这需要我在DOM中指定某个位置让他们重新进入.我希望这些元素能够回到原来的位置.如何确保元素不会将.remove上的信息更改/移动/丢失到.append.

解决方法

>使用.detach()和.append()删除和重新附加元素,它将保留所有事件和数据.
>如果按照与删除元素相反的顺序添加元素,它们都应该重新放回原位

未经测试的代码

var elems3d = $(...);
var elemsRemoved = [];

// removing
elems3d.each(function(i,o) {
   var elem = $(o);
   elemsRemoved.push({
       loc: elem.prev(),obj: elem.detach()
   });
});

// adding back
while (elemsRemoved.length) {
   var elem = elemsRemoved.pop();
   elem.loc.after(elem.obj);
}
原文链接:https://www.f2er.com/js/149876.html

猜你在找的JavaScript相关文章