将事件侦听器绑定到具有相同类的多个元素

库萨尔·德赛

我正在尝试onclick使用JavaScript事件应用于以下元素:

<div class="abc">first</div>
<div class="abc">second</div>
<div class="abc">third</div>

如果单击第一个元素(索引为[0]),则此方法有效,但是我需要适用于所有类的事件:

document.getElementsByClassName('abc')[0].onclick="function(){fun1();}";
function  fun1(){
document.getElementsByClassName('abc').style.color="red"; 
}
加夫格里夫

为了扩展@rock star提供的解决方案,我在函数中添加了两个小的补充。首先,比直接将样式规则应用于元素,最好向元素添加/删除类(具有关联的样式规则)。

其次-在click事件上-现在这将从先前选择的元素中删除红色类(并因此删除样式),并将其添加到新元素中。这将一次只允许一个元素变为红色(在原始解决方案中,任何被单击的元素都将变为红色)。

var els = document.getElementsByClassName('abc');
for (var i = 0; i < els.length; i++) {
  els[i].onclick = fun1;
}

function fun1() {
  var oldLink = document.getElementsByClassName('red')[0];
  if(oldLink) {oldLink.classList.remove('red')};
  this.classList.add('red');
}
.red {
 color:red;
}
<div class="abc">first</div>
<div class="abc">second</div>
<div class="abc">third</div>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

具有相同类的多个元素上的事件侦听器

将Click事件侦听器添加到具有相同类的元素

将事件侦听器添加到容器中具有相同类的多个 div

如何将事件侦听器添加到具有相同类的多个输入中

将多个事件绑定到侦听器(没有JQuery)?

如何使用on('change')将事件侦听器绑定到<script>运行后创建的元素?

AngularJS:使用jQuery将事件侦听器绑定到ng-repeat生成的元素

jQuery DataTables的on()事件侦听器,具有多个事件

具有相同功能的多个事件侦听器存储单独的局部变量?

如何在 JQuery 中为动态创建的具有相同类名的链接添加事件侦听器?

将多个事件侦听器绑定到Node.js中的同一事件的好处是什么

Shadow DOM外部的事件侦听器将不会绑定到Shadow DOM内部的元素

具有不同触发器元素和侦听器元素的自定义事件

如何使用react devtools将功能绑定到onClick事件侦听器

如何将'this'绑定到单击侦听器并使用事件-ES6

绑定事件侦听器并将元素保留为

检查元素是否具有事件侦听器。没有jQuery

将多个事件侦听器添加到一个元素

使用for循环并传递不同的参数将事件侦听器添加到多个元素

将事件侦听器添加到多个生成的元素

将事件侦听器添加到js中的多个选择元素

从单个事件侦听器控制多个元素

如何将唯一事件侦听器绑定和解除绑定到同一对象?

jQuery将事件绑定到具有动态类的元素

将视图侦听器绑定到Extjs中的Controller

附加函数具有绑定时删除侦听器

Node.js EventEmitter:如何将类上下文绑定到事件侦听器,然后删除此侦听器

如何将所有按钮循环到单击事件侦听器

未为所有元素附加事件侦听器