2012-02-11 11 views
1

私は簡単なメニューのために働いている、それぞれのトップメニューをクリックし、サブメニューを開き、最初の子供の背景色を設定します。ここでjquery ul li first-child変更の色

コード:http://jsfiddle.net/X3Dey/

感謝。そこ

+0

あなたの質問は正確ですか? –

+0

@MMC、plsは 'jsfiddle'を参照し、トップメニューをクリックしてサブメニューを表示し、最初の子メニューがbgの色を '#e9aa9e'に変更します。 – Giberno

答えて

0
$(this).children('.sub-menu-wrap').children().first().css('background','#e9aa9e'); 

あなたは(私は信じて)あなたが実際に選択したい要素の親要素を選択しようとしているhttp://jsfiddle.net/X3Dey/6/

1

行く:

$(this).children('.sub-menu-wrap').css('display','block'); 
$(this).children('.sub-menu-wrap:first-child').css('background','#e9aa9e'); 

を変更する必要がありますto(新しい選択全体を作成するのではなく、関数呼び出しを連鎖していることに注意してください):

$(this).children('.sub-menu-wrap').css('display','block').children().first().css('background','#e9aa9e'); 

:first-child pseudo-selectorは、子要素ではなく適用対象の要素をフィルタリングし、子要素を明示的に選択してから最初の要素に限定する必要があります。ここで

はデモです:http://jsfiddle.net/X3Dey/4/

あなたは、以下のセレクタを使用して、可能な場合、連鎖、およびDOMのトラバーサル機能ではなく、文字列擬似セレクターを使用してコードを最適化することができます:ここで

$('.menu').click(function(){ 

    //reset all menu items 
    $('.sub-menu-wrap').css('display','none').children().css('background','d2ff2d'); 

    //now run the code on the selected menu items 
    $(this).children('.sub-menu-wrap').css('display','block').children().first().css('background','#e9aa9e'); 
}); 

はAですこのコードのデモ:http://jsfiddle.net/X3Dey/5/