Javascript 具有样式属性的jQuery克隆元素

Javascript 具有样式属性的jQuery克隆元素,javascript,jquery,clone,Javascript,Jquery,Clone,我想创造一段乏味的历史。当Dragable停止时,它应该将整个DOM推到let history=[],然后每当有人单击按钮时,最后一个DOM应该被带回来,但它不工作。当我试图恢复以前的DOM时,它无法正确克隆。它看起来像style=“top:,left:“属性未克隆。有人能帮忙吗 let history=[]; 函数pushHistory(){ history.push($('.page')。每个(函数(){ 返回$(this.clone)(true,true) })) } 函数backHis

我想创造一段乏味的历史。当Dragable停止时,它应该将整个DOM推到
let history=[]
,然后每当有人单击
按钮时,最后一个DOM应该被带回来,但它不工作。当我试图恢复以前的DOM时,它无法正确克隆。它看起来像
style=“top:,left:“
属性未克隆。有人能帮忙吗

let history=[];
函数pushHistory(){
history.push($('.page')。每个(函数(){
返回$(this.clone)(true,true)
}))
}
函数backHistory(){
pop();
$(history[history.length-1])。每个(函数(){
$(this.detach().appendTo($('.outer'))
})
}
$(“.page”).draggable({
停止:功能(事件、用户界面){
pushHistory();
}
})
$('button')。在('click',function()上{
回溯历史();
})
.page{
显示:内联块;
背景色:红色;
宽度:50px;
高度:50px;
位置:相对位置;
颜色:白色;
字号:3em;
文本对齐:居中;
线高:50px;
}
.回来{
位置:绝对位置;
顶部:0px;
右:0px;
}

1.
2.
3.
4.
5.
6.
返回

我对JavaScript部分做了如下小调整,效果良好:

let history = [];

function pushHistory(el) {
    history.push({
        index: el.index(),
        offset: el.offset()
    })
}

function backHistory() {
    let el = history[history.length - 1];
    if (el) {
        $('.outer').find('.page').eq(el.index).offset(el.offset);
        history.pop();
    }
}

$('.page').draggable({
    start: function() {
        pushHistory($(this))
    }
})

$('button').on('click', function() {
    backHistory();
})
基本上,它现在在可拖动的“开始”事件上保存元素的索引和偏移量。然后,回溯历史仅作用于最后一个拖动的元素

它在这里运行:

您使用的是
.each()
,它返回原始的
$('.page')
,而不是您需要使用的
.map()