2009-08-19 24 views
1

私は、次のjQueryを使用して、アコーディオンタイプのメニューを作成しようとしています:リセットCSSの背景画像

function initMenu() { 
    $('#menu ul').hide(); 
     $('#menu li a').click(
      function() { 
       $(this).next().slideToggle('normal'); 
       $(this).css("background", "url(customnav_selected.png) top right"); 
      } 
     ); 
} 
$(document).ready(function() {initMenu();}); 

私はそれが拡張メニューのリンクやメニューヘッダの背景の変更をクリックしたときにこれは、ポイントに動作します。

しかし、もう一度クリックしてメニューを折りたたんだときに元に戻したいと思っています。

誰でも手助けできますか?これに代えて

答えて

5

$(this).css("background", "url(customnav_selected.png) top right"); 

例えば、CSSクラスにそのスタイルを置き、代わりにcsstoggleClassを使用します。

$(this).toggleClass("selected"); //assuming a class of .selected 

をそのクリックハンドラは次のようになります。

$('#menu li a').click(function() { 
    $(this).next().slideToggle('normal'); 
    $(this).toggleClass("selected"); 
}); 

とスタイル:

<style> 
.selected {background: url(customnav_selected.png) top right} 
</style> 
+0

それはただ完璧です - もし私がJqueryを少し良く知っていれば。 – CLiown

+0

@Dhumperson、要件を満たしていれば、これを回答として受け入れることを検討してください。 – krishna

2

background-imageをnone(または初期値)に設定します。

クラスを特定のhtml要素にCSSプロパティより直接設定し、これらのクラスを追加/削除する方が簡単です。

0

バックグラウンドスタイルを空の文字列に設定すると、スタイルシートから継承したスタイルに戻す必要があります。これは、デフォルトのスタイルはスタイルシートからのものであると仮定します。