javascript - 为两个 anchor 标签添加事件类

标签 javascript

我有以下标记

<div class="sidebar">
  <a href=""><i class="fa fa-pencil"></i> Edit Profile <span><i class="fa fa-chevron-right"></i></span></a>
  <a href=""><i class="fa fa-cog"></i> Account Settings<span><i class="fa fa-chevron-right"></i></span></a>
</div>

这是我应用的javascript

var sidebar = document.querySelector(".sidebar");

for (var i = 0; i <= sidebar.length; i++) {
  sidebar.addEventListener("click", function() {
    this.classList.toggle('active');
  });
}

我想喜欢下面的截图

谢谢。

enter image description here

最佳答案

使用 .querySelectorAll如果您想要元素的集合.querySelector只返回第一个匹配的元素。还要确保测试 i < sidebars.length而不是 i <= sidebars.length .

var as = document.querySelectorAll(".sidebar > a");
for(let i = 0; i < as.length; i++){
  as[i].addEventListener("click", function(){
      this.classList.toggle('active');
  })
}

更好的是,直接迭代 as ,避免 for完全循环(和差一错误):

document.querySelectorAll(".sidebar > a").forEach(a => {
  a.addEventListener("click", () => {
      a.classList.toggle('active');
  });
});

(虽然旧版浏览器不支持 NodeList.forEach,因此如果您使用此方法,请确保也进行了 polyfill)

关于javascript - 为两个 anchor 标签添加事件类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49507045/

相关文章:

javascript - Web Sockets DOM 对象检测

javascript - 以编程方式选择文本 Mobile Safari

javascript - 提交时如何使用 JavaScript 为表单添加更多输入标签值

javascript - 在 Javascript Protractor 测试自动化框架中使用箭头函数

javascript - 数组推送的 Angular2 刷新 View

javascript - jquery 检查所有输入 :checkbox on button click

javascript - 有没有一种可视化方法可以让我们识别时间序列数据上的相同交易?

javascript - Pug 有条件包含文件路径的所有子目录

javascript - Javascript 库发布提要的想法?

javascript - 运行多个js文件而无需每次启动和停止服务器