【发布时间】:2021-06-12 14:10:35
【问题描述】:
为了将原始元素保持在其位置,我想克隆它并拖动克隆的元素。到目前为止它有效。但是,如果我对要克隆的元素进行“双击”(在拖动之前),我会得到两个克隆的对象,并且 drop 插入两个元素而不是一个元素。有人可以帮我解决这个问题。我尝试为 mouseup 使用额外的事件监听器。我没有找到解决办法。我想它很简单,但目前我没有看到它...感谢您的帮助!
这是我整个代码的一个缩减部分:
let basicElement = document.getElementById('basicElement');
basicElement.addEventListener('mousedown', mousedown);
// press element...
function mousedown(e){
console.log('mouse down');
e.stopPropagation();
// clone element
let elementToDrag = basicElement.cloneNode(true);
elementToDrag.id = new Date().getMilliseconds();
// get target
let divTarget = getElementById('divTarget');
// add event listener for drag and drop
basicElement.addEventListener('dragstart', dragstart);
basicElement.addEventListener('dragend', dragend);
divTarget.addEventListener('dragover', dragover);
divTarget.addEventListener('drop', drop);
function dragstart(e){
console.log('drag start');
basicElement.classList.add('dragging');
}
function dragover(e){
console.log('drag over');
e.preventDefault();
}
function drop(e){
console.log('drop');
divTarget.appendChild(panelToDrag);
}
function dragend(e){
console.log('drag end');
basicElement.classList.remove('dragging');
basicElement.removeEventListener('dragstart', dragstart);
basicElement.removeEventListener('dragend', dragend);
divTarget.removeEventListener('dragover', dragover);
divTarget.removeEventListener('drop', drop);
}
}
【问题讨论】:
标签: javascript drag-and-drop clone