jQuery UI-当可丢弃时,必须删除拖动的元素



我有一个事件,它删除了正在处理的元素。看起来像这样:

$('.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事件可能符合条件。不过,如果不看到更多的代码,就很难判断。

最新更新