Javascript 为类中的所有复选框添加事件列表

Kur*_*ula 2 javascript

我正在尝试为类中的所有复选框添加事件列表器。我可以将事件侦听器添加到类中。如何添加到该类中的所有复选框?

var classname = document.getElementsByClassName("classname");

var myFunction = function() {
    var attribute = this.getAttribute("data-myattribute");
    alert(attribute);
};

for (var i = 0; i < classname.length; i++) {
    classname[i].addEventListener('click', myFunction, false);
}
Run Code Online (Sandbox Code Playgroud)

Oli*_*n04 5

由于 JS 事件会向上冒泡到父元素,因此您只需将一个事件侦听器附加到父元素,它将捕获其子元素触发的每个事件。

document.querySelector('#container').onclick = function(ev) {
  if(ev.target.value) {
    console.log(ev.target.checked, ev.target.value);
  }
}
Run Code Online (Sandbox Code Playgroud)
<div id="container">
  <input type="checkbox" value="Bike">I have a bike<br>
  <input type="checkbox" value="Car">I have a car<br>
  <input type="checkbox" value="Flower">I have a flower<br>
</div>
Run Code Online (Sandbox Code Playgroud)

  • @Kurkula,这是首选方法,因为 1)冒泡是 DOM 的工作方式 2)它可以让您节省所有这些事件侦听器,3)如果您决定动态添加一个复选框到页面,即使您没有专门为其附加监听器。 (2认同)