You need to use offset
to get the position
of the moved object and compare it with the "blocks".
I've setup in my demonstration the "blocks" to change to blue when they are overlayed. But you can do whatever you want.
Also you were creating an overhead with your setInterval
. I've moved it to the keyup
event handler.
Further I recommend you to store the position of the "blocks" in an array
if they are static elements and access them when needed.
Working example
var objTop = my.offset().top,
objLeft = my.offset().left,
objWidth = my.width(),
objHeight = my.height();
$('.fixed').each(function(e){
var self = $(this),
selfLeft = self.offset().left,
selfTop = self.offset().top,
selfWidth = self.width(),
selfHeight = self.height();
self.css('background','black');
if((objLeft + objWidth) > selfLeft && objLeft < (selfLeft + selfWidth) && (objTop + objHeight) > selfTop && objTop < (selfTop + selfHeight)){
self.css('background','blue');
}
});
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…