javascript - 如何在被点击的元素上执行 EventListener 脚本
问题描述
在使用 jQuery 很长一段时间后,我正在学习 vanilla javascript。我正在尝试找到与此等效的javascript:
$('.element').click(function(){
$('.element').style("background-color","white");
$(this).style("background-color","red");
});
到目前为止,这是我想出的:
document.querySelector('.element').addEventListener('click', event => {
var y = document.getElementsByClassName('element');
for (i = 0; i < y.length; i++) {
y[i].style.backgroundColor = "white";
}
this.style.backgroundColor = "red";
});
我需要做什么才能使this
关键字按预期工作?
解决方案
我的解释是,您有多个元素,但您编写它的方式是针对单个元素querySelector('.element')
。这只会让你获得第一个.element
。
你可以试试这样的东西吗?很简单。只需使用事件。
const elements = document.querySelectorAll(".element");
function updateBgColor(e) {
elements.forEach(el => {
el.style.background = "white";
});
e.currentTarget.style.background = "red";
};
elements.forEach(el => {
el.addEventListener("click", updateBgColor);
});
body {
background: grey;
}
.element {
padding: 5px;
margin-bottom: 5px;
text-align: center;
width: 200px;
}
<div class="element">Click me</div>
<div class="element">Click me</div>
<div class="element">Click me</div>
<div class="element">Click me</div>
<div class="element">Click me</div>
<div class="element">Click me</div>
<div class="element">Click me</div>
<div class="element">Click me</div>
推荐阅读
- javascript - WordPress:如果帖子没有特色图片,则显示后备缩略图
- reactjs - React 表正在按过滤器排序
- java - 使本机代码在 Android Studio 的模块中工作时出现问题
- css - 在 CSS 中,min-height 在所有浏览器中总是优先于 max-height 吗?
- sql - 如何在查询中选择除所选 MONTH 和 YEAR 之外的数据
- javascript - 'sed' 命令不适用于 java 脚本
- python - 尝试从 Azure VM 连接到 Azure 托管实例中的 sql 时超时
- google-sheets - 将两个连接的表合并为一个图形
- java - Java 8 到 Java 11 迁移中的单元测试失败
- java - Java:线程划分为块数组 - 执行器服务