0

サブメニューを含む垂直メニューがあり、親がクリックされた場合にのみサブメニューを表示し、一度に 1 つのサブメニューのみを表示したいと考えています。ただし、他の親メニューをクリックすると、そのサブメニューが表示されますが、前のサブメニューも表示されます。前のサブメニューを非表示にするにはどうすればよいですか?? 助けてください 。私はjavascriptが初めてです。これが私のhtml-css-javascriptコードです。

<div class="menu">
<ul >


  <li><a href="#" onclick= "Myfunction('cert')">Contacts</a>
   <div style="display: none;" id="cert">
           <ul >
                <li >Submenu 1</li>                                     
                <li>submenu 2</li>
           </ul>
    </div>
   </li>

  <li><a href="#"  onclick="Myfunction('defect')">About</a>
  <div style="display: none;" id="defect">
        <ul >
          <li>menu 1</li>
          <li>menu 2</li>
      </ul>
  </div>
  </li>

</ul>

脚本

function Myfunction(obj) { 
     var ele=document.getElementById(obj).style; 
         if(ele.display=="none") { 
            ele.display="block"; 
         } else { ele.display="none"; } 
} 
4

3 に答える 3

1
<a class="Label">Contacts</a>
<div>
    <ul class="Submenu">
        <li>Menu 1</li>
        <li>Menu 2</li>
    </ul>
</div>

<a class="Label">About</a>
<div>
    <ul class="Submenu">
        <li>Menu 1</li>
        <li>Menu 2</li>
    </ul>
</div>

と :

(function($) {

    $(function() {

        $('.Label').on('click', function() {
            $('.Submenu').hide();
            $(this).next().find('.Submenu').show();
        });

    });

})(jQuery);

それがjQueryのアプローチです。別の勇敢な男にネイティブjsでそれをやらせます:D

于 2013-07-30T07:13:08.207 に答える
0

これを使用できます:

デモはこちら

var lastid;

function Myfunction(obj) {
    var ele = document.getElementById(obj).style;
    var elemLastId = document.getElementById(lastid);
    if (elemLastId != null) {
        elemLastId.style.display = "none";
    }
    lastid = obj;
    if (ele.display == "none") {
        ele.display = "block";
    } else {
        ele.display = "none";
    }
}

最後の ID を記憶するために新しい変数を作成しました。だからあなたはそれを呼び出してそれに適用display:noneすることができます。

于 2013-07-30T07:13:06.750 に答える