2011-01-24 41 views
2

我有像這樣的列表:jQuery的添加類的所有兄弟姐妹,除了1

<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> 

當我點擊任何一個錨我想添加一個類的所有李時珍除的父我點擊的鏈接和「divider」類的li。

我可以得到它與所有與此有關的兄弟姐妹工作:

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

那麼,如何得到它忽略的「分水嶺」類裏?

非常感謝。

回答

12

您還可以使用.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"); 
     } 
    }); 
}); 
+0

jquery建議使用.not()方法。 – heymrcarter

+0

+1,方法pwn選擇器! :o) – jAndy

+0

感謝這工作就像一個魅力。非常感激。 – Daelan

2

您可以排除在您的通話將dividersiblings

$(this).parent().siblings(':not(.divider)').attr("class", "transparent"); 
+2

回答說: 「2秒前」 .. .............. +1 – BoltClock