他の場所がクリックされたらhoverが閉じるようにしたいです。
<ul id="dropmenu"> <li class="dropitem"><a href="#">名前</a> <ul> <li><a href="#">Tom</a></li> <li><a href="#">Juddy</a></li> </ul> </li> <li class="dropitem"><a href="#">住所</a> <ul> <li><a href="#">NY</a></li> <li><a href="#">London</a></li> </ul> </li> <li class="dropitem"><a href="#">職業</a> <ul> <li class="nextitem"><a href="#">ビジネスマン</a> <ul> <li><a href="#">金融</a></li> <li><a href="#">医療</a></li> <li><a href="#">製造</a></li> </ul> </li> <li class="nextitem"><a href="#">その他</a> <ul> <li><a href="#">主婦</a></li> <li><a href="#">フリーター</a></li> <li><a href="#">その他</a></li> </ul> </li> </ul> </li> </ul> <script> $(function() { $('#dropmenu a').siblings().hide().end().click(function(event){ $(this).siblings().toggle(); event.preventDefault(); return false; }); }); </script>
とhtmlを書き、
#dropmenu{ position: relative; list-style-type: none; width: 1000px; height: 40px; margin-top: 50px; padding: 0; } #dropmenu li a{ display: block; margin: 0; padding: 15px 30px 15px; font-size: 17px; font-weight: bold; line-height: 1; text-decoration: none; } #dropmenu li ul{ list-style: none; margin: 0; padding: 0; border-radius: 0 0 3px 3px; } #dropmenu li { display: flex; }
とcssを書きました。
今の状態だと、例えば名前がクリックされたら、
<ul> <li><a href="#">Tom</a></li> <li><a href="#">Juddy</a></li> </ul>
が表示され、
その状態で職業をクリックすると、Tom&Juddyが表示されたまま
<li class="nextitem"><a href="#">ビジネスマン</a>
が表示されます。再び名前をクリックすると名前タブは閉じます。
これを、例えば名前タブが開いたまま職業タブをクリックすると、名前タブは閉じるようにしたいです。
要は、タブAが何階層か開いていても、別のタブをクリックしたらタブAを閉じるようにしたいです。
<script> $(function() { $('#dropmenu a').siblings().hide().end().click(function(event){ $('#dropmenu a').siblings().hide().end(); $(this).siblings().toggle(); event.preventDefault(); return false; }); }); </script>
とするとタブをクリックしても開かなくなってしまいました。
どのように書くと意図した挙動になりますか?

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。