2009-04-09 12 views
5

jQueryの使用例が見つからないので、このような簡単な質問をするのが悪いです。私はこのulを持っています:jQueryセレクタ

<ul id="navLinks"> 
    <li class="selected" id="homeNavLink"></li> 
    <li id="aboutNavLink"></li> 
    <li id="contactNavLink"></li> 
    ... 
</ul> 

どのようなliに "selected"クラスがあるかを変更する関数を書いたいと思います。ここに私の試みがあります:

function changeNavLink(selectedId) { 
    $("#navLinks li").each(function() { 
     $(this).removeClass("selected"); 
    }); 
    $("#" + selectedId).addClass("selected"); 
} 

私は間違っていますか?

答えて

8

を李を与えるあなたは.eachを行う必要はありません - removeClassのような機能がうまく要素のセット上で動作することができます。

function changeNavLink(selectedId) { 
    $("#navLinks li").removeClass('selected') 
        .filter('#' + selectedId) 
        .addClass('selected'); 
} 

どのような作業をしているのかは、すべてのli要素を選択し、すべてのクラスからselectedクラスを削除し、IDが渡されたものだけにfiltering them outを追加し、そのクラスにselectedクラスを追加します。

Here is a working link上記のコードを職場で示しています。

1
$('#navlinks li.selected') 

は、「選択」クラスであなたに

1

与えられた特定のHTMLたとえば、私が希望:

function changeNavLink(selectedId) { 
    $('#' + selectedId).addClass('selected') 
         .siblings('li') 
         .removeClass('selected'); 
} 
0

をなぜ(この)jQueryを使っていけない仕事?それはより簡単で、次にparamsで関数を呼び出します。 HTML:

<ul id="navLinks"> 
    <li class="selected" id="homeNavLink"></li> 
    <li id="aboutNavLink"></li> 
    <li id="contactNavLink"></li> 
</ul> 

JS:

$(document).ready(funciton(){ 
    $('#navLinkgs').on('click', 'li', function(){ 
    $this = $(this); 
    $('#navLinkgs li.selected').removeClass('selected'); 
    $this.addClass('selected'); 
    }); 
});