【发布时间】:2017-04-01 16:40:26
【问题描述】:
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');
}
})
});
我有上面的代码,点击导航来切换一个活动类。
如果我单击导航中的另一个元素,我需要删除所有活动类,除非单击的元素已经具有活动类。
在 Jquery 中,使用 .not() 非常简单。您可以在其中通过事件目标检查并删除所有其他活动类。
因此,为了更清楚地说明这一点,我正在寻找一种删除所有活动类的方法,除非被单击的元素已经有一个活动类。
让我知道你的想法
**************** 更新 ****************** 好的... 单击底部的链接,如果您然后单击另一个链接,它将很好地显示一个屏幕,它将关闭前一个链接,然后打开下一个链接。但是,如果您单击相同的链接,它不会关闭菜单。
如果课程已经打开,我如何删除它?
【问题讨论】:
-
小提琴不是很有用,因为它在运行时什么都不显示。
-
让我更新 Jsfiddle Trincot,这样你就可以看到我的问题,渴望解决这个问题
-
嗨,Trincot,我刚刚更新了我的问题。我希望这现在更有意义。
-
我不明白。您问题中的以下两个短语似乎提出了两个矛盾的问题:“一种删除所有活动类的方法,除非被单击的元素已经有一个活动类。”,与:“但是,如果您单击相同的链接,它不会关闭菜单。如果该类已经打开,我该如何删除它?"
-
好的...我很难用语言表达。我想我想说的是,如果再次单击菜单,或者如果您从底部单击不同的链接,则关闭菜单,然后关闭打开的链接并打开新单击的容器。
标签: javascript