Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

257
Vistas
jQuery: descubre qué elemento está directamente detrás de otro

Estoy creando un pequeño juego de apertura de cajas donde mis usuarios pueden abrir una caja y una rueda giratoria animada se desplaza a lo largo de todos los premios y aterriza en su premio ganador (indicado por la línea negra en el medio en la imagen a continuación)

imagen de la ruleta

Después de la animación, se agregan a la página un montón de elementos de caja que representan los premios. Lo que estoy tratando de averiguar es:

Usando jQuery, ¿cómo puedo encontrar en qué cuadro cae la línea negra?

Cualquier ayuda será apreciada, gracias.

ESTRUCTURA HTML

 <section class="boxes box-background"> <div class="winning-line" id="line">&nbsp;</div> <div class="container boxes-container"> <div class="row"> <div class="col-12"> <div class="open-box"> <div id="unbox-area" id="unbox"> <div id="cardList"> <div class="card" id="prize1">...</div> <div class="card" id="prize2">...</div> <div class="card" id="prize3">...</div> //so on </div> </div> </div> </div> </div> </div> </div> </section>

PROBLEMA

Actualmente, usando el código a continuación, solo puedo obtener el elemento de "caja abierta", no el elemento de clase de "tarjeta" individual real en el que aterrizó la línea negra.

 let blackLineEl = document.getElementById("line"); let rect = blackLineEl.getBoundingClientRect(); let left = rect.x; let originalDisplay = blackLineEl.style.display; blackLineEl.style.display = "none" let winner = document.elementFromPoint(left, 180.0); blackLineEl.style.display = originalDisplay console.log(winner.className);

He intentado ajustar la posición superior estática a diferentes valores, pero no tuve suerte.

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Pruebe el elementFromPoint(x, y) .

Dado que document.elementFromPoint devuelve el elemento superior, deberá configurar temporalmente su arrastrable para mostrar: ninguno o puntero-eventos: ninguno para encontrar elementos debajo de él.

Algo como:

 let lineEl = document.getElementById("blackLine") let x = parseFloat(getComputedStyle(lineEl).left) let y = parseFloat(getComputedStyle(lineEl).top) let h = parseFloat(getComputedStyle(lineEl).height) let originalDisplay = getComputedStyle(lineEl).display //hide black line to get element behind it lineEl.style.display = "none" let winningBox = document.elementFromPoint(x, y+0.5*h); lineEl.style.display = originalDisplay // Do something with winningBox

Editar: puede usar la esencia de Mike Abdullah que obtiene todos los elementos en un punto dado

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda