2012-03-19 86 views
4

任何人都知道如何檢查某些divs之間的碰撞?目前我使用getBoundingClientRect(),但它會檢查每個格:檢查某些div之間的衝突?

if (this.getBoundingClientRect()) { 
    animateContinue = 1; 
} 

我怎麼會去檢查特定的人?使用這個for循環,我可以得到我想檢查的div的ID。

for (var x = 1; x <= noOfBoxArt; x++) { 
    console.log('#boxArt'+x); 
} 
+0

它們是如何碰撞的? – Starx 2012-03-19 10:12:53

+0

可能的副本:http://stackoverflow.com/q/4230029/1048572,http://stackoverflow.com/q/8829421/1048572 – Bergi 2012-03-19 10:14:18

+0

謝謝,我會看看他們。他們使用jQuery UI droppable進行碰撞。我想檢測一個div是否已經放在同一個地方。 – 2012-03-19 10:34:59

回答

6

好的。結束使用this duplicate的修改版本。該做的工作職能是:

var overlaps = (function() { 
    function getPositions(elem) { 
     var pos, width, height; 
     pos = $(elem).position(); 
     width = $(elem).width()/2; 
     height = $(elem).height(); 
     return [ [ pos.left, pos.left + width ], [ pos.top, pos.top + height ] ]; 
    } 

    function comparePositions(p1, p2) { 
     var r1, r2; 
     r1 = p1[0] < p2[0] ? p1 : p2; 
     r2 = p1[0] < p2[0] ? p2 : p1; 
     return r1[1] > r2[0] || r1[0] === r2[0]; 
    } 

    return function (a, b) { 
     var pos1 = getPositions(a), 
      pos2 = getPositions(b); 
     return comparePositions(pos1[0], pos2[0]) && comparePositions(pos1[1], pos2[1]); 
    }; 
})(); 

,並通過使用overlaps(div1, div2);(返回TRUE或FALSE)調用。