Перетаскивание Javascript: удаление перетаскиваемого элемента после успешного удаления
Я использую собственный API перетаскивания в javascript. Как удалить перетаскиваемый элемент из DOM после успешного удаления?
- Я пробовал прослушивать событие drop, но это срабатывает только на элемент, который удаляется и не имеет ссылки на перемещаемый элемент.
- Я пробовал прослушивать элемент dragend, но это не дает мне знать, было ли успешным падение или нет.
- Я пытаюсь избежать хранения элемента, перетаскиваемого в глобальную переменную, поскольку это вызовет проблемы, если между различными вкладками или браузерами возникает перетаскивание.
Вот пример: http://jsfiddle.net/KNG6n/3/
Список букв, которые можно перетащить в поле. Когда в поле будет сброшено письмо node, я бы хотел, чтобы он был удален из списка (без каких-либо других элементов списка, содержащих одну и ту же букву).
Ответы
Ответ 1
Слушайте событие dragend и проверяйте переменную dropEffect объекта dataTransfer перед тем, как делать что-либо с перетаскиваемым элементом:
htmlElement.addEventListener('dragend', function(event){
if(event.dataTransfer.dropEffect !== 'none'){
$(this).remove();
}
});
Ответ 2
Также посмотрите на этот пример: http://html5demos.com/drag
var el = document.getElementById(e.dataTransfer.getData('Text'));
el.parentNode.removeChild(el);
Ответ 3
Одним из способов было бы присвоить это переменной, ограниченной вне dragstart, и использовать этот элемент при удалении.
Посмотрите эту скрипту.