如何在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); } }