如何在DOM树中保存/恢复对象的位置?

如果我有以下html:

  • test
  • special
  • test

如何保存.draggable当前的DOM位置(一般情况下)?

我计划通过将它附加到document.body并使其position: absolute;来拖动这个.draggable position: absolute; 但如果用户没有对它做任何事情,我将需要恢复它。

我可以使用克隆,隐藏原始文件,并使用代理进行拖动,但我觉得这个问题可能已经更直接地解决了。

思考?

要保存对象的位置,您只需将DOM引用保存到它之前的兄弟节点即可。 如果之前没有兄弟,则保存父母。

 function saveLocation(element) { var loc = {}; var item = $(element).prev(); loc.element = element; if (item.length) { loc.prev = item[0]; } else { loc.parent = $(element).parent()[0]; } return(loc); } 

然后,恢复:

 function restoreLocation(loc) { if (loc.parent) { $(loc.parent).prepend(loc.element); } else { $(loc.prev).after(loc.element); } }