JQuery | Получить элементы div в определенной области

Есть ли простой способ получить элементы div, полностью установленные в определенной области?

Пример:

http://i.imgur.com/oIw6i.png

<div id="redbox"> RESIZE DIV </div>

<div id="grid">
  <div id="box1"></div>
  <div id="box2"></div>
  <div id="box3"></div>
  <div id="box4"></div>
</div>

У меня есть 4 коробки (серый), и я могу изменить размер div (красный поверх всех ящиков). После изменения размера я хочу знать, какие из элементов div полностью установлены в этой области.

Кто-нибудь знает, как это сделать? Есть ли метод или функция в JQUERY?

Ответы

Ответ 1

Мне кажется, что плагин withinBox может помочь вам решить эту проблему (jquery.fn.withinBox). Вы можете использовать код следующим образом:

var area = $('#redbox'),
    offset = area.offset(),
    selected = $('#grid div').withinBox(offset.left,
                                        offset.top,
                                        area.width(),
                                        area.height()
                                        );

Ответ 2

Что я делаю с JQuery, это цикл через все элементы для проверки, получение их значения .offset(), плюс ширина и высота.

Тогда для каждого элемента я получаю эти четыре значения:

X1 (offset().top)
Y1 (offset().left)
X2 (= X1 + width)
Y2 (= Y1 + height)

Я буду использовать эти значения, чтобы проверить следующие четыре точки (все же для каждого проверяемого элемента)

x1,y1  x1,y2  x2,y2  x2,y1  (the four corners)

При условии, что мы выполнили одно и то же преобразование с "покрывающим" DIV (извлекая его из четырех углов xd1, yd1, xd2, yd2), я буду рассуждать так:

Если одна или несколько этих точек попадают в мое "покрытие" DIV, тогда рассмотрим DIV "покрытый".

Изменить: Я не знал, что для этого есть плагин, я полагаю, что внутренняя механика похожа на мою, но я уверен, что это более простое решение, чем мое:)

Ответ 3

Я не думаю, что для этого уже есть полное решение. Согласно этому, это может быть различным.

Но для этого вы можете использовать document.elementFromPoint.

Зная абсолютную позицию повторно значимого div, вы можете создать карту координат, а затем посмотреть, какие элементы находятся под этим div.