7

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

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

我知道有“out”事件,但是只要您将项目拖到 div 之外,而不是在您放下它时(释放鼠标按钮),它就会起作用。

4

3 回答 3

8

终于得到了一个适当的解决方案,即使它也有点“hacky”。我所做的是将带有可拖动对象的前景 div 设置为可放置,但使用 dropover 和 dropout 功能来确定项目是否在前景 div 之外。当它在 div 之外时,我绑定 mouseup 事件以执行放置功能。当它回来时,我取消绑定 mouseup 事件,所以它不会触发。

因为在拖动时我已经按住鼠标按钮,释放它就像放下我“手中”的东西一样。

$("#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");
        }
    });
于 2010-03-15T14:25:46.563 回答
1

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

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

于 2009-12-01T09:41:35.983 回答
0

以一种非常“hacky”的方式解决了这个问题:在中心制作了一个内容 div 的表格,并使表格的所有其他单元格都可放置。从本质上讲,这意味着您可以毫无问题地离开中心 div,但这仍然不是一个好的方法。

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

于 2009-12-08T08:05:50.423 回答