如何使用jQuery获取给定位置的最顶层元素?

时间:2011-12-06 07:55:18

标签: javascript jquery html jquery-ui

我有一个可拖动的停止事件,我想移动到某个边界,如果它没有被拖到其他任何东西上。问题:droppable处理的drop事件发生在可拖动处理程序的stop事件之后。 draggables的停止处理程序给出了拖动拖动的位置,但我不知道如何确定该位置的元素。有什么想法吗?

1 个答案:

答案 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;
}