Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

259
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda