我正在实施 jquery UI draggable ,并且您在链接页面上看到了其中2个可拖动项。它们当然是可拖动的,所以我可以根据需要移动它们。
我如何让他们彼此了解,以便我可以尝试让它们在拖动时对齐或显示对齐标记,它们与另一个可拖动的x或y相同?
答案 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上生成以下数据的列表:
将对象定义为可拖动时,您可以将回调绑定到“拖动”事件。如果可拖动移动1个像素,则会触发此事件。这意味着这个回调将被调用很多,因此将计算保持在最低限度是关键。
当调用回调时,您将获得ui和事件对象。 ui对象将在拖网上包含有价值的X和Y定位数据。
通过拖网和其他拖曳物的尺寸和位置,您可以轻松计算与其s and的接近程度并采取相应措施。利用可用的数据,您应该能够实现akellehe的数学。
在我忘记之前,你必须重新计算可拖动停止事件的位置列表。
编辑:检查draggable上的以下链接,其中包含有关可拖动事件,方法和值的文档。