jQuery在不再使用后删除所有元素的添加类

时间:2017-03-23 23:57:39

标签: jquery

我尝试在不使用函数之后从兄弟元素中删除添加的类,但没有成功。

我使用Arun P Johny的几行脚本(找到here和小提琴here)并添加了一个用于切换,添加和删除类的代码行,脚本执行以下操作:

  • 点击每个链接/标签(.link)显示/隐藏自己的div(.div)。 (所有.divs最初都是隐藏的。)
  • 当第一个.link被点击时,第一个是活动的(具有可见的.div),可见的.div隐藏,另一个显示
  • 点击.link获取class .selected,而其他人获得class .not-selected,所以我可以在至少一个链接处于活动状态时显示它们(显示.div)
  • 再次点击.link(和.div隐藏)时,删除了.selected类

以下是代码:

$(document).ready(function () {
    var $targets = $(".div");
    $(".link").click(function () {
        var $target = $($(this).data("target")).fadeToggle("slow");
        $targets.not($target).hide();
        $(this).toggleClass("selected").removeClass("not-selected").siblings().addClass("not-selected").removeClass("selected");
    });
});

我无法使其工作的是当再次单击.link(和.div隐藏)时,我无法从所有其他(兄弟).links中删除.not-selected类。当没有.div可见时,我希望链接没有类.not-selected,就像它们在第一个.link被点击之前没有它一样。

要想象:想象.links是背景颜色为灰色的标签。当我点击每个标签时,它变为黄色(并打开一些内容),而其他变为蓝色。但是当我再次点击黄色标签并隐藏内容时,我希望所有标签再次变为灰色(失去蓝色)。

如果我将addClass更改为toggleClass:

(...).siblings().toggleClass("not-selected").(...) 

它完全没有做到这一点。如果我在相同的链接/选项卡上单击两次,它可以工作,但当我单击一个又一个选项卡时,它仍然会删除.not-selected类,但它不应该。我试过了

if ($(".div").not(":visible)) {$(".link").removeClass("not-selected");}

但即使使用.lenght === 0也不起作用。即使选择了一个链接/标签,它也会整个时间删除所有未选择的类。

帮助? : - )

0 个答案:

没有答案