【问题标题】:Vanilla Javascript - Adding class to element 1 and remove class from element 2 on click of element 1Vanilla Javascript - 向元素 1 添加类并在单击元素 1 时从元素 2 中删除类
【发布时间】:2016-03-16 07:09:02
【问题描述】:

有人告诉我,我不能再在我正在构建的项目中使用 jQuery,所以我不得不使用 vanilla Javascript,这有时会超出我的想象。我希望简单地将这个 jQuery 转换为 js。我在 Stack Overflow 上搜索和搜索无济于事,但我觉得它不应该那么困难。任何帮助都会很棒!

$('.navbuttoncontainer a').on( 'click', function() {
$('.navbuttoncontainer .current').removeClass('current');
$(this).addClass('current');

【问题讨论】:

标签: javascript


【解决方案1】:

您可以将click 事件侦听器附加到.navbuttoncontainer 元素。

然后通过检查目标元素的标签名(e.target)来判断a元素是否被点击。对元素的classList property 使用.add()/.remove() 方法以添加/删除类。

document.querySelector('.navbuttoncontainer').addEventListener('click', function (e) {
  var target = e.target;
  
  if (target.tagName === 'A') {
    e.currentTarget.querySelector('.current').classList.remove('current');
    target.classList.add('current');
  }
});
.current {
  color: #f00;
}
<div class="navbuttoncontainer">
  <a class="current">Initially current item</a>
  <a>Second item</a>
  <a>Third item</a>
</div>

【讨论】:

    【解决方案2】:

    所有现代浏览器都支持document.querySelector/document.querySelectorAll,这与jQuery $ 函数本质上是一样的。

    (有关支持的浏览器信息,请查看http://caniuse.com/#feat=queryselector

    DOM API 不是在 jQuery 对象上调用 addClass/removeClass,而是公开一个名为 className 的元素属性。这与元素上的class 属性相同:

    this.className = '当前';

    最后,事件处理程序注册到addEventListener 函数。参数是事件名称和事件处理函数。

    【讨论】:

      猜你喜欢
      • 2019-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多