一般来说,我有3个带按钮的块,当你点击按钮时,图片会被另一个替换,但有必要确保当下一个轨道被激活时,上一个按钮会恢复到原来的状态。
let btn = document.querySelectorAll('.btn-wrapper');
btn.forEach(function(element) {
element.addEventListener('click', function(e) {
element.querySelector('.play__btn').classList.toggle('play__btn-hidden');
element.querySelector('.pause__btn').classList.toggle('pause__btn-active');
})
})
.flex {
display: flex;
align-items: center;
}
.card__title {
margin-right: 20px;
}
.btn {
width: 17px;
height: 17px;
cursor: pointer;
}
.play__btn-hidden {
display: none;
}
.pause__btn {
display: none;
}
.pause__btn-active {
display: block;
}
<div class="cards">
<div class="card flex">
<h4 class="card__title">Track 01</h4>
<div class="btn-wrapper">
<img src="https://cdn-icons-png.flaticon.com/512/153/153752.png" alt="" class="play__btn btn">
<img src="https://cdn-icons-png.flaticon.com/512/1214/1214679.png" alt="" class="pause__btn btn">
</div>
</div>
<div class="card flex">
<h4 class="card__title">Track 02</h4>
<div class="btn-wrapper">
<img src="https://cdn-icons-png.flaticon.com/512/153/153752.png" alt="" class="play__btn btn">
<img src="https://cdn-icons-png.flaticon.com/512/1214/1214679.png" alt="" class="pause__btn btn">
</div>
</div>
<div class="card flex">
<h4 class="card__title">Track 03</h4>
<div class="btn-wrapper">
<img src="https://cdn-icons-png.flaticon.com/512/153/153752.png" alt="" class="play__btn btn">
<img src="https://cdn-icons-png.flaticon.com/512/1214/1214679.png" alt="" class="pause__btn btn">
</div>
</div>
</div>
4条答案
按热度按时间hvvq6cgz1#
这里有一个稍微不同的处理方法:
eeq64g8w2#
我稍微修改了一下你的脚本:
现在的情况是
1.我们将所有按钮重置为原始播放状态。
1.一旦所有的按钮都被重置,我们切换被点击的按钮的状态。为此,我们使用e.target.parentElement来定位btn-wrapper,然后定位 Package 器内的按钮。然后我们添加/删除适当的类。
希望这能有所帮助!
kzmpq1sx3#
你可以这样做:
of1yzvn44#
我简化了你的代码版本。如果你只想改变可见性,就不需要在两个元素上切换类。
只需过滤按钮集合中的活动项并将其删除。