jQuery Droppable:丢弃div?

时间:2009-12-01 09:37:31

标签: jquery user-interface droppable

当您将项目拖放到可放置的DIV之外时,有什么方法可以让jQuery执行某个功能?

假设我们在div中有可拖动或可排序的项目,如果它们被删除到父div之外,您希望它们被删除。

我知道有“out”事件但是只要你将项目拖到div之外就行了,而不是在你放弃它时(释放鼠标按钮)。

3 个答案:

答案 0 :(得分:8)

最后得到了一个正确的解决方案,即使它有点“hacky”。我所做的是将前景div设置为draggables作为droppable,但使用dropover和dropout功能来确定该项是否在前景div之外。当它在div之外时,我绑定mouseup事件来执行drop功能。当它回来时我取消绑定鼠标事件,因此它不会触发。

因为在拖动时我已经按住了鼠标按钮,释放它就像丢弃我手中的那些一样。

$("#foregroundDiv").droppable({
        accept: ".draggableThingy",
        tolerance: "pointer",       
        out: function(event, ui) {
            $(ui.helper).mouseup(function() {
                doSomethingTo(ui.draggable);
            });
        },
        over: function(event, ui) {
            $(ui.helper).unbind("mouseup");
        }
    });

答案 1 :(得分:1)

为什么不用另一个可放置的div包装所有元素,然后在那里进行检查?

如果用户将其放在浏览器窗口之外怎么办?你也会考虑这个吗?

答案 2 :(得分:0)

以一种漂亮的“hacky”方式解决了这个问题:在中心制作了一个带有内容div的表,并使表中的所有其他单元格都可以删除。从本质上讲,这意味着您可以毫无问题地退出中心区域,但这仍然是一个很好的方法。

如果有人有更好的方法,请告诉我。