Find html element nearest to position (relative or absolute)

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});

Fixed the bugs to the previous answer (also cleaned up to ES6):

const getClosestElement = (x, y) => {
  const elements = $('body *');
  let closestEl = elements.eq(0); //initialize to first element
  let offset = closestEl.offset();
  offset.left += closestEl.outerWidth() / 2; // center of object
  offset.top += closestEl.outerHeight() / 2; // middle of object
  let minDist = Math.sqrt((offset.left - x) * (offset.left - x) + (offset.top - y) * (offset.top - y));

  elements.each((i) => {
    const el = elements.eq(i);
    offset = el.offset();
    offset.left += el.outerWidth() / 2; // center of object
    offset.top += el.outerHeight() / 2; // middle of object
    const dist = Math.sqrt((offset.left - x) * (offset.left - x) + (offset.top - y) * (offset.top - y));
    if (dist < minDist) {
      minDist = dist;
      closestEl = el;
    }
  });

  return closestEl;
};