Estoy desarrollando un simple juego de globos con dos divs. El problema es que no puedo activar una función cuando los dos divs se tocan entre sí.¿Cómo detectar si dos divs tocan con jquery?
Respuesta
Está buscando la detección de colisiones de caja delimitadora. Si quieres plantear un evento, tienes que probar varias veces, pero sería mejor simplemente ejecutar la función sobre todos tus objetos del juego desde tu bucle de juego. El recinto de seguridad está en http://jsfiddle.net/nGRwt/7/
function collision($div1, $div2) {
var x1 = $div1.offset().left;
var y1 = $div1.offset().top;
var h1 = $div1.outerHeight(true);
var w1 = $div1.outerWidth(true);
var b1 = y1 + h1;
var r1 = x1 + w1;
var x2 = $div2.offset().left;
var y2 = $div2.offset().top;
var h2 = $div2.outerHeight(true);
var w2 = $div2.outerWidth(true);
var b2 = y2 + h2;
var r2 = x2 + w2;
if (b1 < y2 || y1 > b2 || r1 < x2 || x1 > r2) return false;
return true;
}
gracias, útil – thelost
¿Cómo sería? ¿editar esto para permitir que los div estén sentados uno al lado del otro pero sin solaparse? –
Hola @BC. ¿Te importa si copio y uso este código libremente sin atribución? –
Usted puede tratar de jquery-collision más jquery-ui-draggable-collision. Divulgación completa: acabo de escribir y publicar estos en sourceforge.
El primero permite esto:
var hit_list = $("#collider").collision(".obstacle");
que es la lista de todos ".obstacle" que se superponen "#collider".
El segundo permite:
$("#collider").draggable({ obstacle: ".obstacle" });
que le da (entre otras cosas), un evento de "colisión" de obligar a:
$("#collider").bind("collision", function(event,ui){...});
e incluso se puede configurar:
$("#collider").draggable({ obstacle: ".obstacle", preventCollision: true });
para evitar que "#colisionador" se solape con cualquier ".obstacle" mientras se arrastra.
¡Muy buen complemento! – user2896540
- 1. Crear envoltorio div alrededor de otros dos divs con jQuery
- 2. deslizando divs horizontalmente con JQuery
- 3. ¿Cómo dibujar una línea entre dos divs?
- 4. en gris divs con jQuery
- 5. ¿Cómo detecto que dos dedos tocan en el iPhone?
- 6. ¿Cómo puedo alinear verticalmente dos divs flotantes?
- 7. orden de cambio divs con jQuery
- 8. Ajustar 3 divs en uno con jQuery
- 9. Mostrar Ocultar DIVs: jQuery
- 10. eliminar 3 últimos divs con jQuery
- 11. jQuery Equal Height Divs
- 12. jQuery reordenación divs
- 13. Cómo obtener la distancia entre dos divs
- 14. Eliminar divs antiguos si hay más de 20 | jQuery
- 15. Cómo detectar cambios de URL con jQuery
- 16. jQuery: detectar si el elemento existe
- 17. jquery - Colapsar/expandir divs?
- 18. Mostrando divs aleatorios usando Jquery
- 19. cómo ocultar todos los divs en jQuery
- 20. jQuery, cómo encontrar la lista de divs con similares Identificación
- 21. ¿Cómo ordenar los divs según su id con jQuery?
- 22. jQuery detectar si textarea está vacío
- 23. jQuery animación detectar si la animación?
- 24. Cambiar las posiciones de 2 divs con jQuery
- 25. jQuery webcam/flash: ¿Cómo detectar si la webcam está activa?
- 26. Dos divs con sombra paralela en el mismo nivel
- 27. línea vertical espaciador entre dos divs
- 28. Oculto divs padres en Jquery
- 29. Combinar dos selectores con un objeto jQuery
- 30. Dos divs flotantes uno encima del otro
¿Entonces los divs se están moviendo? ¿O qué está sucediendo exactamente y qué estás tratando de causar? – justkt
¿Está utilizando juegos de arrastre jQuery o algo? Esta pregunta necesita más información/aclaración para obtener una respuesta. – Tejs
Proporcione más información y algunos códigos. – Ant