Find html element nearest to position (relative or absolute)

后端 未结 5 1815
隐瞒了意图╮
隐瞒了意图╮ 2020-12-10 01:52

Given absolute or relative position (top & left) is there any way to get the nearest html element to these co-ordinates?

Or alternately, is there any way to craf

5条回答
  •  温柔的废话
    2020-12-10 02:08

    I've built a jQuery method that returns closest element to offset, within the collection:

    jQuery.fn.closestToOffset = function(offset) {
        var el = null,
            elOffset,
            x = offset.left,
            y = offset.top,
            distance,
            dx,
            dy,
            minDistance;
        this.each(function() {
            var $t = $(this);
            elOffset = $t.offset();
            right = elOffset.left + $t.width();
            bottom = elOffset.top + $t.height();
    
            if (
                x >= elOffset.left &&
                x <= right &&
                y >= elOffset.top &&
                y <= bottom
            ) {
                el = $t;
                return false;
            }
    
            var offsets = [
                [elOffset.left, elOffset.top],
                [right, elOffset.top],
                [elOffset.left, bottom],
                [right, bottom],
            ];
            for (var off in offsets) {
                dx = offsets[off][0] - x;
                dy = offsets[off][1] - y;
                distance = Math.sqrt(dx * dx + dy * dy);
                if (minDistance === undefined || distance < minDistance) {
                    minDistance = distance;
                    el = $t;
                }
            }
        });
        return el;
    };
    

    Notes:

    1. If the offset is inside one of the elements, it will be returned.
    2. I'm looping through four offsets, because this gives the best accuracy.

    Use it like this:

    $('div.myCollection').closestToOffset({left: 5, top: 5});
    

提交回复
热议问题