有没有办法查看是否有人点击了某个类的div?
我一直试图找到一种方法来自动化这个非常简单的问题,这让我发疯了。我有将某个类的显示设置为无的代码。但是,我想用其他几个都有这个类的 div 来做到这一点。我想要的是,当我单击此类的任何 div 时,该单个 div 消失。为糟糕的可读性道歉。
HTML:
<body>
<div>
<div>
<div>
<h1>1</h1>
</div>
<div>
<h1>2</h1>
</div>
<div>
<h1>3</h1>
</div>
<div>
<h1>4</h1>
</div>
<div>
<h1>5</h1>
</div>
<div>
<h1>6</h1>
</div>
<div>
<h1>7</h1>
</div>
<div>
<h1>8</h1>
</div>
<div>
<h1>9</h1>
</div>
<div>
<h1>10</h1>
</div>
<div>
<h1>11</h1>
</div>
<div>
<h1>12</h1>
</div>
</div>
</div>
<body>
CSS:
<body>
<div class="section">
<div class="bontainer">
<div class="tbclicked clickone">
<h1 class="one">1</h1>
</div>
<div class="tbclicked clicktwo">
<h1 class="two">2</h1>
</div>
<div class="tbclicked clickthree">
<h1 class="three">3</h1>
</div>
<div class="tbclicked clickfour">
<h1 class="four">4</h1>
</div>
<div class="tbclicked clickfive">
<h1 class="five">5</h1>
</div>
<div class="tbclicked clicksix">
<h1 class="six">6</h1>
</div>
<div class="tbclicked clickseven">
<h1 class="seven">7</h1>
</div>
<div class="tbclicked clickeight">
<h1 class="eight">8</h1>
</div>
<div class="tbclicked clicknine">
<h1 class="nine">9</h1>
</div>
<div class="tbclicked clickten">
<h1 class="ten">10</h1>
</div>
<div class="tbclicked clickeleven">
<h1 class="eleven">11</h1>
</div>
<div class="tbclicked clicktwelve">
<h1 class="twelve">12</h1>
</div>
</div>
</div>
<body>
JS:
.tbclicked {
background-color: #fff0c9;
}
回答
您可以使用所需的类遍历所有元素,并click为每个元素添加一个事件侦听器:
const tbclicked = document.querySelectorAll('.tbclicked');
tbclicked.forEach((e) => e.addEventListener('click', ()=>{ e.style.display = "none"}));
.tbclicked {
background-color: #fff0c9;
}
.tbclicked {
background-color: #fff0c9;
}
<div>
<div>
<h1>1</h1>
</div>
<div>
<h1>2</h1>
</div>
<div>
<h1>3</h1>
</div>
<div>
<h1>4</h1>
</div>
<div>
<h1>5</h1>
</div>
<div>
<h1>6</h1>
</div>
<div>
<h1>7</h1>
</div>
<div>
<h1>8</h1>
</div>
<div>
<h1>9</h1>
</div>
<div>
<h1>10</h1>
</div>
<div>
<h1>11</h1>
</div>
<div>
<h1>12</h1>
</div>
</div>
或者使用事件委托(推荐):
document.addEventListener("click", function(e){
if(e.target.parentElement.classList.contains("tbclicked")){
e.target.style.display = "none";
}
})
<div>
<div>
<h1>1</h1>
</div>
<div>
<h1>2</h1>
</div>
<div>
<h1>3</h1>
</div>
<div>
<h1>4</h1>
</div>
<div>
<h1>5</h1>
</div>
<div>
<h1>6</h1>
</div>
<div>
<h1>7</h1>
</div>
<div>
<h1>8</h1>
</div>
<div>
<h1>9</h1>
</div>
<div>
<h1>10</h1>
</div>
<div>
<h1>11</h1>
</div>
<div>
<h1>12</h1>
</div>
</div>