2011-02-02 16 views
0

基本的に私はいくつかの他のリンクを含むいくつかのリンクを持っています。私は親リンクだけを表示しようとしています。そして、親リンクをクリックすると、再び子リンクが消えなければならない親リンク、jqueryのドロップダウンメニューの問題

コードは最初のクリックのために働き、それが関連する子リンクを開きますが、どのように私は再び親リンクをクリックしたときにそれらが消えるようです、ため

感謝手伝い。

jQuery.noConflict(); 

jQuery(document).ready(function(e) { 

jQuery('.nav-container ul.level0 li.level1 a').click(function(e) { 

    e.preventDefault(); 
    jQuery(this).css({'background':'#000000','color':'#ffffff'}); 
    jQuery('.nav-container ul.level0 li.level2 a').css('display','block'); 

}); 

}); 

答えて

1

jquery toggleを使用してください。

+0

うわー、それは簡単だった、私は疑問を尋ねるのは馬鹿だ。 – amir

0

これを行う簡単な方法は、クリックしたアイテムに読み取られる属性を作成することです。属性「SELは」「プッシュ」、または「ドロップ」のような何か他のものかもしれない

jQuery.noConflict(); 

jQuery(document).ready(function(e) { 

    jQuery('.nav-container ul.level0 li.level1 a').click(function(e) { 
     if(jQuery(this).attr('sel') != 'true') 
     { 
      e.preventDefault(); 
      jQuery(this).attr('sel','true'); 
      jQuery(this).css({'background':'#000000','color':'#ffffff'}); 
      jQuery('.nav-container ul.level0 li.level2 a').css('display','block'); 
     } else { 
      jQuery(this).attr('sel',''); 
      // do close code 
     } 
    }); 

}); 

は...まさにそれでした「選択」のような、物事を使用してから視聴したい「クリック」、または他の人かもしれませんHTMLを混乱させる。また、私はオブジェクトに複数のクラスを持つことができ、これを返すので、私は 'クラス'を使用しません。

<div class="selected item"></div> 
jQuery(this).attr('class') = 'selected item'; 
+0

パフォーマンスのコメント。変数にjQuery(this)または$(this)の別名を付ける方がはるかに高速です。だから、あなたのクリック関数の先頭にvar $ el = $(this)を置き、この変数を参照してください。 – Keltex

+0

@Keltex - このコメントをいただきありがとうございますが、実際にOPのコードを追加して書きました。私はOPを混乱させないように元のコードを変更しませんでした。 –