当您将项目拖放到可放置的DIV之外时,有什么方法可以让jQuery执行某个功能?
假设我们在div中有可拖动或可排序的项目,如果它们被删除到父div之外,您希望它们被删除。
我知道有“out”事件但是只要你将项目拖到div之外就行了,而不是在你放弃它时(释放鼠标按钮)。
答案 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的表,并使表中的所有其他单元格都可以删除。从本质上讲,这意味着您可以毫无问题地退出中心区域,但这仍然是一个很好的方法。
如果有人有更好的方法,请告诉我。