jQuery UI - 什么时候droppable必须删除拖动的元素?

时间:2012-09-05 19:38:58

标签: javascript jquery jquery-ui

我有一个事件删除它正在使用的元素。看起来像这样:

$('.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()插件)完成其功能运行后,但我不知道该怎么做。我可以抑制错误,但我宁愿避免这种情况。

1 个答案:

答案 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事件可能符合条件。但是,如果没有看到更多的代码,很难说清楚。