我有一个删除它正在处理的元素的事件。看起来像这样:
$('.droppable_slot').droppable({
drop: function (event,ui) {
// snipped lines of code
delete_element(ui.draggable);
}
);
我得到一个错误 a(this).data("draggable") is undefined 显然是因为 delete_element()
删除了 drop 事件正在处理的元素 (正如它应该)。除了仅在 drop 事件(或 .droppable() 插件)完成其功能运行后以某种方式运行 delete_element() 之外,我不知道如何避免这种情况,但我不知道该怎么做。我可以抑制错误,但我宁愿避免这种情况。
最佳答案
显然,在拖放操作完成将源元素移动到目标容器之前,您清除源容器的时间过早。
由于 drop
之后 droppable
小部件没有触发任何事件,因此延迟清除操作 setTimeout()直到下降完成可能是一个很好的解决方法:
$(".droppable_slot").droppable({
drop: function(event, ui) {
// Snipped lines of code...
window.setTimeout(function() {
delete_element(ui.draggable);
}, 10);
}
});
但这是一种变通方法,而不是解决方案。我们在这里实际需要的是在 drop
操作完成后发生的事件。 draggable
小部件的 stop
事件可能符合条件。不过,如果不查看更多代码就很难判断。
关于javascript - jQuery UI - 当 droppable 必须删除拖动的元素时怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12288568/