简体   繁体   English

使用 JavaScript 单击时使选项卡处于活动状态

[英]Make Tab active when clicked with JavaScript

What I am trying to accomplish is making the clicked tab active我想要完成的是使单击的选项卡处于活动状态

I have seen a lot of jQuery examples, but I'm using JavaScript ES6我看过很多 jQuery 示例,但我使用的是 JavaScript ES6

I know it's an easy task but my mind is so done right now that I can't think我知道这是一项简单的任务,但我现在的想法已经完成,以至于我无法思考

here is the code: https://codepen.io/revatto/pen/wvMzOqo这是代码: https://codepen.io/revatto/pen/wvMzOqo

here is my main.js:这是我的 main.js:

const tabs = document.querySelectorAll('[data-tab-target]');
const tabsContents = document.querySelectorAll('[data-tab-content]');

tabs.forEach(tab => {
    tab.addEventListener('click', () => {
        const target = document.querySelector(tab.dataset.tabTarget);
        tabsContents.forEach(tabContent => {
            tabContent.classList.remove('active');
        })
        target.classList.add('active');
    })
})

You were only adding and removing 'active' class from tab contents you need to do the same with 'li' ie list too.您只是从选项卡内容中添加和删除“活动”class,您也需要对“li”即列表执行相同操作。

const tabs = document.querySelectorAll('[data-tab-target]');
const tabsContents = document.querySelectorAll('[data-tab-content]');

tabs.forEach(tab => {
    tab.addEventListener('click', (e) => {
        const target = document.querySelector(tab.dataset.tabTarget);

        tabsContents.forEach(tabContent => {
            tabContent.classList.remove('active');

        })

        target.classList.add('active');

        //loop through 'li' items and remove 'active' class
        tabs.forEach(tab => {
              tab.classList.remove('active');
          })

       //add 'active' class to clicked 'li' item
        e.target.classList.add("active");

    })
})

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM