我有一个可拖动的停止事件,我想移动到某个边界,如果它没有被拖到其他任何东西上。问题:droppable处理的drop事件发生在可拖动处理程序的stop事件之后。 draggables的停止处理程序给出了拖动拖动的位置,但我不知道如何确定该位置的元素。有什么想法吗?
答案 0 :(得分:0)
你可能只是循环遍历可放置的元素并检查它们的偏移位置。结合每个元素的宽度/高度,您可以计算在触发停止事件时可拖动的元素。这样的事情(这是未经测试的,在我的头顶。)
function stopCallback (x, y) {
var $droppables = $(".droppable"),
containedDraggableAtStop = function($item, left, top) {
var itemL = $item.offset().left,
itemT = $item.offset().top,
itemR = itemL + $item.width,
itemB = itemT + $item.height;
if (top > itemT && top < itemB && left > itemL && left < itemR) {
return true;
}
return false;
},
numDroppables = $droppables.length,
i;
// x, y are the coords passed from the stop function
for (i = 0; i < numDroppables; i++) {
if (containedDraggableAtStop($droppables.eq(i), x, y)) {
return $droppables.eq(i);
}
}
return -1;
}