jquery UI可拖动对其他元素的“位置感知”吗?

时间:2010-08-20 22:44:45

标签: jquery jquery-ui open-source draggable

我正在实施 jquery UI draggable ,并且您在链接页面上看到了其中2个可拖动项。它们当然是可拖动的,所以我可以根据需要移动它们。

我如何让他们彼此了解,以便我可以尝试让它们在拖动时对齐或显示对齐标记,它们与另一个可拖动的x或y相同?

2 个答案:

答案 0 :(得分:4)

听起来很有趣。

我想我会设置一个公共参考点,并通过使用该点进行三角测量来衡量它们之间的距离。

例如。您可以使用页面左上角作为参考点... 让elementa和elementb成为你要比较的div。 function getDistance(){     var aPos = $(“#elementa”)。offset();     var bPos = $(“#elementb”)。offset();

// distance of a to b:
//y = (y2-y1)
//x = (x2-x1)
var xa = aPos.left;
var xb = bPos.left;

var ya = aPos.top;
var yb = bPos.top;

//vector from point a to b:
x = xa-xb;
y = ya-yb;

// length of the vector (distance from div a to b)
return Math.sqrt(x*x + y*y);

}

如果你想在拖动过程中获得位置,你可以使用包装器: http://jsbin.com/etako/edit

或记录位置如: $(this).data('draggable')。offset.click.top - = x

答案 1 :(得分:3)

好问题。

首先,您需要在每个draggable上生成以下数据的列表:

  • X位置
  • Y位置
  • 高度
  • 宽度

将对象定义为可拖动时,您可以将回调绑定到“拖动”事件。如果可拖动移动1个像素,则会触发此事件。这意味着这个回调将被调用很多,因此将计算保持在最低限度是关键。

当调用回调时,您将获得ui和事件对象。 ui对象将在拖网上包含有价值的X和Y定位数据。

通过拖网和其他拖曳物的尺寸和位置,您可以轻松计算与其s and的接近程度并采取相应措施。利用可用的数据,您应该能够实现akellehe的数学。

在我忘记之前,你必须重新计算可拖动停止事件的位置列表。

编辑:检查draggable上的以下链接,其中包含有关可拖动事件,方法和值的文档。