javascript - jQuery UI - 当 droppable 必须删除拖动的元素时怎么办?

标签 javascript jquery jquery-ui

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

$('.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/

相关文章:

javascript - Vue.js 2.0 : Modify object properties from method

jquery - 情商选择器不工作

javascript - 使用 jQuery 编辑和选择文本

jQuery UI 选项卡动态添加选项卡和内容不起作用

错误状态样式的 jQuery 交互提示

jQuery UI 自动完成 : How to get 'change' event to fire earlier?

javascript - 如何在Javascript中检测页面的宽度和高度?

javascript - jspm + karma + karma-jspm + 插件 typescript

jQuery 在 .animate 之后多次更改颜色和文本

javascript - 如何使用正则表达式限制 0 - 100 并且在 Javascript 中不输入空白?