2012-01-16 10 views
0

私はそのjQueryの垂直メニューライブラリを使用していますwww.dynamicdrive.com/dynamicindex1/ddsmoothmenu.htm選択したパスの選択を行いたいと思います。のは、私はパスで(上記そのサイト上のデモで)、そのメニューを通過するとしましょう:jQuery - 動的に作成されたメニューのメニュー項目のパスのCSSを変更します。

Folder 2 > Folder 2.1 > Folder 3.1.1 > SubItem 3.1.1.1 

私は(上記のパスから)以前のすべての項目は、その背景を変更することを望んSubItem 3.1.1.1をクリックすると、 。以下のコードは最上位の項目のみを選択します。それを修正するには?

$('#nav > li').click(function() { 
     $(this).children('a').css('background-color', 'red'); 
     $(this).parents('ul').each(function() { $(this).prev('a').css('background-color', 'red'); }); 
    }); 

。そのシナリオでは、私のコードは失敗します。

答えて

1

メニューを整理しているように見えるようにして、クリックイベント親liに子liからなり、バブルアップなので、あなただけのすべてのメニュー項目にクリックイベントをバインドし、現在の要素の背景を設定する必要があります。

$('#nav li').click(function() { 
    $(this).children('a').css('background-color', 'red'); 
}); 

あなたはまだあなたが試み#1を解決し、別のメニュー項目を

+0

奇妙な。私はあなたが送信したjQuery Vertical Menu Libraryのリンク上で、Firebugのようなデバッガを使ってテストしました:($( '#smoothmenu2 li'))click(function(){$(this).children( 'a') css( 'background-color'、 'red');}) ')、それは完全に機能しました。試してみてください。あなたが何が間違っているのかわからない場合は、問題を再現するフィドルを作成してみてください – ori

+0

赤い背景を解除することによると:http://stackoverflow.com/questions/8884987/jquery-strange-function-behaviour – Tony

0

をクリックすると、赤い背景の設定を解除したい場合があります

$('#nav a').click(function() { 
     $(this).css('background-color', 'red'); 
     $('a.selected').css('background-color', 'red'); 
    }); 
+1

メニューは「li> a、li> ul、ul> liというようにメニューが構造化されているので、イベントaは、aからliをクリックしてulからli 'など – ori

関連する問題