Scenario: I have a parent <div>
element that loads absolutely-positioned child <p>
elements.
All these <p>
elements are loaded dynamically from the database, so the parent div's number of child elements cannot be predicted - neither can their position or width (it's a different number everytime).
I'm using code from this page to detect when 2 <p>
child elements overlap, however, what I'm trying to achieve is to detect overlapping (or collision) between multiple elements (I need to be watching many elements and detect each collision).
This is the code I'm using to detect between 2 elements:
function collidesWith(element1, element2) {
var Element1 = {};
var Element2 = {};
Element1.top = $(element1).offset().top;
Element1.left = $(element1).offset().left;
Element1.right = Number($(element1).offset().left) + Number($(element1).width());
Element1.bottom = Number($(element1).offset().top) + Number($(element1).height());
Element2.top = $(element2).offset().top;
Element2.left = $(element2).offset().left;
Element2.right = Number($(element2).offset().left) + Number($(element2).width());
Element2.bottom = Number($(element2).offset().top) + Number($(element2).height());
if (Element1.right > Element2.left && Element1.left < Element2.right && Element1.top < Element2.bottom && Element1.bottom > Element2.top) {
alert('Elements collide');
}
}
How do I modify this to make it compatible with my scenario?