如何编辑此Javascript代码以拖动元素并在原始容器中留下副本?
...
containers.forEach(container => {
container.addEventListener('dragover', e => {
e.preventDefault()
const afterElement = getDragAfterElement(container, e.clientY)
const draggable = document.querySelector('.dragging')
if (afterElement == null) {
container.appendChild(draggable)
} else {
container.insertBefore(draggable, afterElement)
}
})
})
function getDragAfterElement(container, y) {
const draggableElements = [...container.querySelectorAll('.draggable:not(.dragging)')]
return draggableElements.reduce((closest, child) => {
const box = child.getBoundingClientRect()
const offset = y - box.top - box.height / 2
if (offset < 0 && offset > closest.offset) {
return { offset: offset, element: child }
} else {
return closest
}
}, { offset: Number.NEGATIVE_INFINITY }).element
}
一切正常,我所需要的只是留下一个被删除元素的副本。
2条答案
按热度按时间mf98qq941#
首先,你必须克隆可拖动的元素。然后,在drop事件中,你必须追加你的元素。在使用dragover的情况下,当你添加一个元素时,你必须在dragleave事件中删除它。
nfs0ujit2#
它不会工作,因为这个函数:
试试别。