如果我在移动设备上,我会在dom中移动Vue组件,因为我想使用绝对定位并且想要确保我不在relative
容器内。
if (this.mobile) {
this.$el.parentNode.removeChild(this.$el);
document.getElementById('vue').appendChild(this.$el);
} else {
// Place the element back at it's original location.
}
此代码使用去抖动resize
方法放置,因此它也适用于调整窗口大小。
它工作正常,但是当我开始使用移动设备并调整回桌面时,我需要获取组件首次初始化的原始dom位置。
这可能只是一个Javascript问题,但我怎样才能获得该组件的确切dom位置的原始位置,以便我可以将其重新放回去?
修改
我用以下内容保存初始父元素:
this.parent = this.$el.parentElement;
虽然我再次将元素追加回parentElement,但这并不保证父元素中的正确顺序。
答案 0 :(得分:5)
您只想保存原始parentNode
一次,并在需要时使用它。这样的事情应该有效。根据您的设置,您可能需要将insertBefore
与Daniel Beck的隐藏标记构思一起使用。
if (!this.originalParentNode) {
this.originalParentNode = this.$el.parentNode;
}
if (this.mobile) {
this.$el.parentNode.removeChild(this.$el);
document.getElementById('vue').appendChild(this.$el);
} else {
// Place the element back at its original location.
this.originalParentNode.appendChild(this.$el);
}