2012-01-23 8 views
0

複数のクラスを持つメニュー要素にjqueryを使用してアクティブなクラスを追加するにはどうすればよいですか?これまでのところ、以下の私のコードは動作しません:jquery他のjqueryでアクティブクラスの複数のクラスを追加

jQueryの

$('#foo_menu li a').click(function(){ 
    $('#foo_menu li a').removeClass('menucolor'); 
    $(this).addClass('menucolor'); 
}); 

HTML

<ul id="foo_menu"> 
<li><a href="/fooA" class="fooa qtipmenu menucolor" id="foo_A"></a></li> 
<li><a href="/fooB" class="foob qtipmenu" id="foo_B"></a></li> 
<li><a href="/fooB" class="fooc qtipmenu" id="foo_C"></a></li> 
</ul> 

注:qtipmenuクラスはjQueryを使ってポップアップを作成します - http://craigsworks.com/projects/qtip2/)。これは

CSS

#menu li a.fooa { 
    background-image: url(/images/foo_a.png); 
    height: 20px; 
    width: 20px; 
} 
#menu li a.menucolor { 
    background-position: left bottom; 
    height: 20px; 
    width: 20px; 
} 
+0

コードをそのままファイルにコピーしてもよろしいですか? –

+0

@ jfriend00これはサイトのどこかで動作しますが、このメニューでは動作しません。各メニュー項目に別のクラス(画像メニュー用)があり、クラス(ポップアップメニュー用)も共有されているかどうかは疑問です。 – chowwy

答えて

2

上jqueryのスクリプトと競合した場合this jsfiddleで実証されているように、あなたのコードは正常に動作していることを見ることができることを確認していません。 (セレクタを変更してメニューカラークラスを削除しましたが、それは問題ではありません)。

あなたの問題はほぼ間違いなく他にあります。

removeClassaddClassの機能は、クラスの数に関係なく機能します。

+0

実際には、2つのことを手伝ってくれました。クリック(function(e) - eとe.preventDefault()を使わずにclick(function())しました。しかし、preventDefaultは私にページをロードさせません。そして、クラス追加機能はprevDefなしでは機能しません。 – chowwy

+0

ああ、それは説明しています。あなたのリンクがページをリロードせず、 –

+0

ちょっとした問題:メニューのアクティブなクラスはうまくいっていますが、preventDefaultはページを読み込ませません。また、prevDefがなければ、メニューのアクティブなクラスは機能しません。ページがロードされる理由は何ですか? – chowwy

関連する問題