Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/436.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript—如何删除所有活动类,除非单击的元素已经有活动类_Javascript - Fatal编程技术网

Javascript—如何删除所有活动类,除非单击的元素已经有活动类

Javascript—如何删除所有活动类,除非单击的元素已经有活动类,javascript,Javascript,我有上面的代码,点击一个导航来切换一个活动类 如果我单击导航中的另一个元素,我需要删除所有活动类,除非单击的元素已经有活动类 在Jquery中,使用.not()非常简单。您可以通过事件目标检查并删除所有其他活动类 因此,为了更清楚地说明这一点,我正在寻找一种删除所有活动类的方法,除非被单击的元素已经有了活动类 让我知道你的想法 ***********更新****************** 好啊 点击底部的一个链接,它会很好地显示一个屏幕,如果你再点击另一个链接,它会关闭上一个链接,然后打开下一

我有上面的代码,点击一个导航来切换一个活动类

如果我单击导航中的另一个元素,我需要删除所有活动类,除非单击的元素已经有活动类

在Jquery中,使用.not()非常简单。您可以通过事件目标检查并删除所有其他活动类

因此,为了更清楚地说明这一点,我正在寻找一种删除所有活动类的方法,除非被单击的元素已经有了活动类

让我知道你的想法

***********更新****************** 好啊 点击底部的一个链接,它会很好地显示一个屏幕,如果你再点击另一个链接,它会关闭上一个链接,然后打开下一个链接。但是,如果单击同一链接,则不会关闭菜单

如果类已打开,如何删除该类


链接:

也许是这样的

例如:

    const offCanvasLinks = document.querySelectorAll('.off-canvas__link');

    [].forEach.call(offCanvasLinks, function(link) {
        link.addEventListener('click', (event) => {
            const typeVal = link.getAttribute('data-type') 

            if (typeVal === "star") {
                document.querySelector('[data-star-links]').classList.toggle('active');
            } else if (typeVal === "how-to") {
                document.querySelector('[data-how-to]').classList.toggle('active');
            } else {
                document.querySelector('[data-presenters]').classList.toggle('active');
            }
        })
    });

也许是这样的

例如:

    const offCanvasLinks = document.querySelectorAll('.off-canvas__link');

    [].forEach.call(offCanvasLinks, function(link) {
        link.addEventListener('click', (event) => {
            const typeVal = link.getAttribute('data-type') 

            if (typeVal === "star") {
                document.querySelector('[data-star-links]').classList.toggle('active');
            } else if (typeVal === "how-to") {
                document.querySelector('[data-how-to]').classList.toggle('active');
            } else {
                document.querySelector('[data-presenters]').classList.toggle('active');
            }
        })
    });

如果我理解正确,您希望切换与单击的项对应的元素的活动类,并且希望从所有其他元素中删除活动类

您可以按如下方式执行此操作:

// unless the clicked on element has already an active class
if(!link.classList.contains('active')){
    // remove all active classes
    var actives = document.querySelectorAll('.active');
    [].forEach.call(actives, function(elem) {  
        elem.classList.remove("active");
    });
}
看你的

或者在一行中:


…在

中,如果我理解正确,您希望切换与单击的项目对应的元素的活动类,并且希望从所有其他元素中删除活动类

您可以按如下方式执行此操作:

// unless the clicked on element has already an active class
if(!link.classList.contains('active')){
    // remove all active classes
    var actives = document.querySelectorAll('.active');
    [].forEach.call(actives, function(elem) {  
        elem.classList.remove("active");
    });
}
看你的

或者在一行中:



…在

中,这不起作用,因为我需要切换类。因此,如果它处于活动状态,它将删除所有这些代码,然后将单击的代码再次变为活动的。我用if检查更新了代码,可能我理解错了。不,恐怕这不是我要找的。我可能有点不明白你到底想要什么。你已经写了三次“删除所有活动类,除非点击的元素已经有一个活动类”,但我写的代码就是我所理解的。请进一步澄清。不,这不起作用,因为我需要切换类。因此,如果它处于活动状态,它将删除所有这些代码,然后将单击的代码再次变为活动的。我用if检查更新了代码,可能我理解错了。不,恐怕这不是我要找的。我可能有点不明白你到底想要什么。你已经写了三次“删除所有活动类,除非点击的元素已经有一个活动类”,但我写的代码就是我所理解的。请进一步澄清。小提琴不是很有用,因为它在运行时没有显示任何内容。让我更新JSFIDLE Trincot,以便您可以看到我的问题,渴望得到解决。我刚刚更新了我的问题。我希望这现在更有意义。我不明白。您的问题中的以下两个短语似乎在问两个相互矛盾的问题:“一种删除所有活动类的方法,除非所单击的元素已经具有活动类。”,而不是:“但是,如果单击同一链接,它不会关闭菜单。如果该类已经打开,我如何删除它?”确定。。。我正在努力用语言来表达这一点。我想我想说的是,如果再次单击菜单,或者如果从底部单击其他链接,则关闭菜单,然后关闭打开的链接并打开新单击的容器。小提琴没有太大用处,因为它在运行时什么都没有显示。让我更新JSFIDLE Trincot,以便您可以看到我的问题,渴望解决此问题HI Trincot,我刚刚更新了我的问题。我希望这现在更有意义。我不明白。您的问题中的以下两个短语似乎在问两个相互矛盾的问题:“一种删除所有活动类的方法,除非所单击的元素已经具有活动类。”,而不是:“但是,如果单击同一链接,它不会关闭菜单。如果该类已经打开,我如何删除它?”确定。。。我正在努力用语言来表达这一点。我想我想说的是,如果再次单击菜单,或者如果从底部单击其他链接,则关闭菜单,然后关闭打开的链接并打开新单击的容器。先生,您是一个传奇人物。抱歉解释不好,先生,你是个传奇人物。抱歉解释得不好。