[英]Change parent block background when child input is checked(vanilla js)
我是编码世界的新手,非常感谢您提供建议或任何想法。 我想知道当检查子输入时是否可以更改当前父块背景(.checkbox-container)的颜色。 主要问题是我有多个带有输入的块,并且只需要将背景颜色更改为当前块,而不是全部? 据我了解,没有没有标记更改的纯 css 解决方案,但这不是我的情况。 有人可以告诉我如何在 vanilla js 中做到这一点吗?
这是小提琴的链接:
https://jsfiddle.net/william_eduards/r4jxvuz5/4/
和这里的可视代码示例:
.checkbox-container { display: flex; align-items: center; justify-content: center; flex-wrap: nowrap; background: #E8EBF0; border: 1px solid #E8EBF0; transition: background.3s ease-in-out; margin-bottom: 8px; border-radius: 4px; }
<div class="dimensional-container checkbox-container"> <input type="checkbox" name="snapchat" class="checkbox-container__snapchat" id="snapchat"> <label for="snapchat">snapchat</label> </div> <div class="dimensional-container checkbox-container"> <input type="checkbox" name="facebook" class="checkbox-container__facebook" id="facebook"> <label for="facebook">Facebook</label> </div> <div class="dimensional-container checkbox-container"> <input type="checkbox" name="hangouts" class="checkbox-container__hangouts" id="hangouts"> <label for="hangouts">hangouts</label> </div>
querySelectorAll
查找所有input
。addEventListener
e.target.checked
检查元素,如果检查,则更改其父e.target.parentElement
背景style
。 我用的是red
,你可以自己用 select 颜色。
const allInputs = document.querySelectorAll("input"); allInputs.forEach(input => { input.addEventListener("click", e => { if (e.target.checked) { e.target.parentElement.style.background = "#ff0000"; } else { e.target.parentElement.style.background = "#E8EBF0"; } }) })
.checkbox-container { display: flex; align-items: center; justify-content: center; flex-wrap: nowrap; background: #E8EBF0; border: 1px solid #E8EBF0; transition: background.3s ease-in-out; margin-bottom: 8px; border-radius: 4px; }
<div class="dimensional-container checkbox-container"> <input type="checkbox" name="snapchat" class="checkbox-container__snapchat" id="snapchat"> <label for="snapchat">snapchat</label> </div> <div class="dimensional-container checkbox-container"> <input type="checkbox" name="facebook" class="checkbox-container__facebook" id="facebook"> <label for="facebook">Facebook</label> </div> <div class="dimensional-container checkbox-container"> <input type="checkbox" name="hangouts" class="checkbox-container__hangouts" id="hangouts"> <label for="hangouts">hangouts</label> </div>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.