我有一个事件,它删除了正在处理的元素。看起来像这样:
$('.droppable_slot').droppable({
drop: function (event,ui) {
// snipped lines of code
delete_element(ui.draggable);
}
);
我得到一个错误a(this).data("draggable")是未定义的,显然是因为delete_element()
删除了drop事件正在处理的元素(应该如此)。我不知道如何避免这种情况,除非在drop事件(或.dropable()插件)完成其函数运行后以某种方式运行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
事件可能符合条件。不过,如果不看到更多的代码,就很难判断。