JQuery draggable - 没有重叠

Pet*_*ter 7 jquery draggable

是否有可能说"可拖动的div - >没有重叠"?

我认为主要问题是:绝对; ... 对?

善待彼得

eru*_*orm 15

您可以尝试jquery-collisionjquery-ui-draggable-collision.完全披露:我刚刚在sourceforge上编写并发布了这些内容.

第一个允许这个:

var hit_list = $("#collider").collision(".obstacle");
Run Code Online (Sandbox Code Playgroud)

这是与"#collider"重叠的所有".obstacle"的列表.

第二个允许:

$("#collider").draggable( { obstacle: ".obstacle" } );
Run Code Online (Sandbox Code Playgroud)

这给你(除其他外)一个"碰撞"事件绑定到:

$("#collider").bind( "collision", function(event,ui){...} );
Run Code Online (Sandbox Code Playgroud)

你甚至可以设置:

$("#collider").draggable( { obstacle: ".obstacle", preventCollision: true } );
Run Code Online (Sandbox Code Playgroud)

防止"#collider"在拖动时重叠任何".obstacle".

  • 使用jQuery版本1.8.20不能100%工作.另一种方法是使用提供的1.8.12版本 (3认同)
  • @usandfriends:没关系.找到这个分支:https://github.com/dsbaars/jq-ui-draggable-collision (2认同)

Nic*_*ver 5

jQuery UI draggable中没有用于碰撞检测的内置函数,除非你实际上是在进行排序之类的事情.最接近你想要的东西是可排序的plceholder,看起来像这样.

短版本是碰撞检测,每个拖动元素在性能方面都不是微不足道的(取决于元素的数量),所以它被排除在库之外,因为它是一个非常罕见的请求.但是,如果您确实需要碰撞检测,则可以在可拖动drag事件中自己计算碰撞.