Jquery 如何知道元素的默认位置?

Jquery 如何知道元素的默认位置?,jquery,Jquery,假设使用以下html: <main class="main"> <div class="foo"></div> </main> 因此,现在我将把.foo元素移到页脚: $('.foo').appendTo('.footer') 现在,过了一段时间,我想将.foo元素回滚到其默认位置,并将.foo放在那里: $('.foo').appendTo(????) //Or, $('.foo').insertAfter(????) //Or, $(

假设使用以下html:

<main class="main">
   <div class="foo"></div>
</main>
因此,现在我将把
.foo
元素移到
页脚

$('.foo').appendTo('.footer')
现在,过了一段时间,我想将
.foo
元素回滚到其默认位置,并将
.foo
放在那里:

$('.foo').appendTo(????)
//Or,
$('.foo').insertAfter(????)
//Or,
$('.foo').insertBefore(????)

我应该如何处理这个问题?

您已经使用jQuery修改了DOM,因此它不再像加载页面时那样位于“默认”位置。一个可能不太好的选择是,在使用while循环和
parent()
方法将选择器移动到页脚之前,先将其缓存。您还可以克隆元素并隐藏原始元素

另一种选择是在DOM中的旧位置保留一个隐藏元素

$foo = $('.foo');
$foo.after('<span class="fooOriginal"></span>');
$foo.appendTo('.footer');

// revert
$foo.appendTo('.fooOriginal');
$foo=$('.foo');
$foo.之后(“”);
$foo.appendTo(“.footer”);
//恢复
$foo.appendTo('.foodoriginal');

如果不想隐藏原始对象并克隆它,或者只想保留此元素的一个实例,可以在其后面添加一个虚拟隐藏元素,然后只需获取隐藏元素并在其后面附加DIV

为什么不隐藏原始“.foo”元素,克隆它并使用它。稍后当您需要回滚时,删除克隆并显示隐藏的克隆:)克隆方法会妨碍元素上的许多事情,这就是为什么我不想使用克隆方法。您能给我举个例子吗?仅仅使用parent()方法不适合这个要求,因为它可能在任何地方,我应该如何使用它?appendTo、insertAfter或insertBefore??您必须循环,直到到达
或其他您知道位置的地方。我认为一个更好的选择是克隆它,它应该在不附加之前插入。
$foo = $('.foo');
$foo.after('<span class="fooOriginal"></span>');
$foo.appendTo('.footer');

// revert
$foo.appendTo('.fooOriginal');