Pesquisa de site

javascript - Como clicar em uma caixa HTML sem registrar o evento de clique da caixa atrás dela?


Eu tenho uma caixa colocada em cima de outra caixa, ambas com seus próprios eventos de clique separados. A caixa de cima é azul e a que está atrás é vermelha. Sempre que clico na caixa azul, o evento de clique da caixa vermelha também é registrado. Aqui está o código. Além disso, por favor, não use event.preventDefault(); event.stopPropagation(); se você estiver respondendo, pois isso me deu problemas no passado.

box1() {
  console.log("box 1");   
}
box2() {
  console.log("box 2");
}
.box1{
    left : 100px;
    top: 100px;
    width: 400px;
    height: 400px;
    background-color: red;

}
.box2{
    position: relative;
    left : 100px;
    top: 100px;
    width: 400px;
    height: 400px;
    background-color:blue;
}
<div class="container">
    <div class="box1" (click)="box1()">
        <div class="box2" (click)="box2()">
        </div>
    </div>
</div>

Resposta #1

Eu revisei seu código e eu mudei um pouco seu CSS e HTML e funciona perfeitamente.

caixa.html

<div class="container">
   <div class="box1" (click)="box1()"></div>
   <div class="box2" (click)="box2()"></div>
</div>

box.css

.box1 {
  position: fixed;
  left: 100px;
  top: 100px;
  width: 400px;
  height: 400px;
  background-color: red;
  z-index: 0;
}
.box2 {
  position: fixed;
  left: 200px;
  top: 200px;
  width: 400px;
  height: 400px;
  background-color: blue;
  z-index: 999;
}
.container {
  position: relative;
  left: 100px;
  top: 100px;
}

caixa.ts

 box1() {
    console.log("box 1");   
  }
  box2() {
    console.log("box 2");
  }

demonstração funcionando: https://stackblitz.com/edit/angular-ivy-rxyqcd?file=src/app/app.component.ts