当您将项目拖到可放置 DIV 之外时,有什么方法可以让 jQuery 执行功能?
假设我们在一个 div 中有可拖动或可排序的项目,如果它们被放到其父 div 之外,您希望将它们删除。
我知道有“out”事件,但是只要您将项目拖到 div 之外,而不是在您放下它时(释放鼠标按钮),它就会起作用。
当您将项目拖到可放置 DIV 之外时,有什么方法可以让 jQuery 执行功能?
假设我们在一个 div 中有可拖动或可排序的项目,如果它们被放到其父 div 之外,您希望将它们删除。
我知道有“out”事件,但是只要您将项目拖到 div 之外,而不是在您放下它时(释放鼠标按钮),它就会起作用。
终于得到了一个适当的解决方案,即使它也有点“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");
}
});
为什么不用另一个可放置的 div 包装所有元素,然后在那里进行检查?
如果用户将它放在浏览器窗口之外怎么办?你也会考虑这个吗?
以一种非常“hacky”的方式解决了这个问题:在中心制作了一个内容 div 的表格,并使表格的所有其他单元格都可放置。从本质上讲,这意味着您可以毫无问题地离开中心 div,但这仍然不是一个好的方法。
如果有人有更好的方法,请告诉我。