我有一个事件删除它正在使用的元素。看起来像这样:
$('.droppable_slot').droppable({
drop: function (event,ui) {
// snipped lines of code
delete_element(ui.draggable);
}
);
我收到错误 a(this).data(“draggable”)未定义显然是因为delete_element()
删除了drop事件正在处理的元素(应该如此)。我不知道如何避免这种情况,除了以某种方式运行delete_element()只有在drop事件(或.droppable()插件)完成其功能运行后,但我不知道该怎么做。我可以抑制错误,但我宁愿避免这种情况。
答案 0 :(得分:3)
显然,在drop操作完成将源元素移动到目标容器之前,您要过早清理源容器。
由于在droppable
之后drop
窗口小部件没有触发事件,因此将清除操作延迟setTimeout()直到丢弃完成后可能是一个很好的解决方法:
$(".droppable_slot").droppable({
drop: function(event, ui) {
// Snipped lines of code...
window.setTimeout(function() {
delete_element(ui.draggable);
}, 10);
}
});
但这是一种解决方法,而不是解决方案。我们实际需要的是在drop
操作完成后发生的事件。 stop
窗口小部件的draggable
事件可能符合条件。但是,如果没有看到更多的代码,很难说清楚。