jquery将类添加到除1之外的所有兄弟节点

时间:2011-01-24 20:11:52

标签: jquery

我有一个这样的清单:

<ul id="items"><li><a href="">Link</a></li><li><a href="">Link</a></li><li class="divider"></li><li><a href="">Link</a></li><li><a href="">Link</a></li></ul>

当我点击任何一个锚时,我想为所有li添加一个类,除了我点击的链接的父级和带有“divider”类的li。

我可以让它与所有兄弟姐妹一起工作:

 $(this).parent().siblings().attr("class", "transparent");

那么如何通过“divider”类忽略li呢?

非常感谢。

2 个答案:

答案 0 :(得分:16)

您还可以使用.not命令过滤掉您不想要的任何内容。这是传递Matt。

中提到的CSS :not伪类选择器的替代方法
$(this).parent().siblings().not(".divider").addClass("transparent");

使用.addClass.removeClass

也可能更好

修改

jQuery很糟糕,使用DOM;)

link.addEventListener("click", function addClasses() {
    var li = this.parentNode,
        lis = li.parentNode.children;

    [].forEach.call(lis, function addClassIfCorrect(el) {
        var classList = el.classList
        if (el !== li && !classList.contains("divider")) {
            classList.add("transparent");
        }
    });
});

答案 1 :(得分:2)

您可以在调用divider

时排除siblings课程
$(this).parent().siblings(':not(.divider)').attr("class", "transparent");