经过一些测试后,当Draggable的中心位于Droppable中时,我的Droppable元素只接受Draggable元素。
当左上角位于Droppable内时,如何更改此行为以接受Draggable?
注意:可拖动量大于Droppables。
答案 0 :(得分:1)
也许droppable's tolerance
option的某些非默认值可能是您的不错选择,尽管它们不会完全符合您的要求。
来自文档:
指定用于测试拖动器是否悬停在droppable上的模式。可能的值:
"fit"
:Draggable完全覆盖了droppable。"intersect"
:Draggable在两个方向上至少重叠50%的droppable。"pointer"
:鼠标指针与droppable重叠。"touch"
:Draggable可以重叠任何金额。
默认值为"intersect"
。我会考虑使用"pointer"
或"touch"
。
或者,如果您确实需要使用左上角作为参考,那么您应该覆盖$.ui.intersect
,这是根据公差检查可拖动和可拖放是否相交的函数模式。如果他们这样做,它应该返回true
,否则返回false
。它看起来像这样:
$.ui.intersect = function (draggable, droppable, toleranceMode) {
swtich(toleranceMode) {
// Check if they intersect based on the selected mode.
default:
return false;
}
}
您需要重新定义该功能并添加自定义case
块,同时保留原始模式。否则,依赖于它的代码的其他一些部分(可能是其他一些jQuery UI组件)将会中断。
但是,这只适用于jQuery UI< 1.12
。如果您使用的是较新版本,则必须覆盖其他一些方法。您可以在此处找到代码示例的详细答案:Build the matching option for jQuery UI Droppable's Intersect tolerance