javascript - JqueryUI droppable 'out' 事件不会触发

标签 javascript jquery html drag-and-drop

我有 2 个 droppables 和 2 个draggables。

如果 item1 被拖到垃圾桶 1,则 item2 不能被拖到垃圾桶 1,它会恢复到原来的位置。

如果将 item1 从垃圾桶 1 拖到垃圾桶 2,则垃圾桶 1 应该再次可用,但此时会失败,因为“out”事件未触发。

代码如下:

$(function() {
        $(".item").draggable({
                revert: 'invalid',
                cursor: 'move'
        });

        $("#items").droppable({
                drop: function( event, ui ) {
                    $("#trash").droppable( "option", "disabled", false );
                    $("#trash2").droppable( "option", "disabled", false );
                }
        });

        $("#trash").droppable({
                out: function() {
                    $( this ).droppable( "option", "disabled", false );
                    console.log('hi')
                },
                drop: function( event, ui ) {
                    $( this ).droppable( "option", "disabled", true );
                }
        });

         $("#trash2").droppable({
                out: function() {
                    $( this ).droppable( "option", "disabled", false );
                    console.log('hi')
                },
                drop: function( event, ui ) {
                    $( this ).droppable( "option", "disabled", true );
                }
        });
});

这是 fiddle :http://jsfiddle.net/vMQVy/120/

有人知道如何解决这个问题吗?

最佳答案

  • 当您将可拖动对象放入可放置区域时,会触发“drop”事件
  • 当可拖动对象位于可放置区域上方但未放置而离开此可放置区域时,甚至会触发“out”。这是“over”的相反事件。

因此,在您的示例中,使用“out”事件并不是实现这一目标所需要做的事情。

据我所知,您无法知道可拖动对象在被放入可放置区域之前来自哪里。

我使用的解决方案是每次将项目放置在可放置区域时存储该项目的位置。这样,每次删除一个项目时,您都会检查它之前是否在另一个垃圾箱中,如果是,则重新启用另一个垃圾箱。

关于javascript - JqueryUI droppable 'out' 事件不会触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37864165/

相关文章:

javascript - 删除/移动 Google Chrome 左下角的状态栏(链接地址栏)

html - Div 在所有其他 div 之上

html - 自动对焦仅适用于页面刷新

html - 强制 Div 宽度大于 Margin-auto 宽度

javascript - 更改存储为十六进制整数的颜色的单个 channel (RGB)

java - 如何将 HTML 表单提交重定向到 iframe?

javascript - 仅使用多个拆分运算符将数据拆分为两个数组

javascript - 使用 jQuery 将字符串 append 到 url

javascript - 如何在javascript中根据事件触发带有参数的函数

javascript - jQuery:通过单击删除对象会导致意外的循环