2011-01-24 13 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> 

私は私が親を除くすべての李さんにクラスを追加するアンカーのいずれかをクリックすると私がクリックしたリンクと「分割」クラスのある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、メソッドがセレクタを呼び出す! :o) – jAndy

+0

これは魅力的なように働いてくれてありがとう。とても有難い。 – Daelan

2

あなたはsiblingsにお電話でdividerクラスを除外することができます。

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

は "2秒前答え" .. .............. +1 – BoltClock

関連する問題