Jqueryを使用して、ネストされたドロップダウンメニューのcss3トランジション(マージン)アニメーションを制御しています。メニューのメイン部分でイベントをトリガーするリンクをクリックすると、ネストされたメニューをドロップダウンできます。同じトリガーをもう一度クリックすると、本来のドロップダウンが閉じます。しかし、すべてのドロップダウントリガーをクリックすると、すべてのドロップダウンメニューが同時に表示されます。
私が求めているのは、同じメインメニューで別のドロップダウントリガーをクリックしたときです。ドロップダウンの1つがすでに開いている場合、開いているドロップダウンは、新しいドロップダウンが開くときにJqueryで制御されるcss3トランジションを使用して閉じます。したがって、一度に開くことができるドロップダウンは1つだけです。
私はjqueryを初めて使用しますが、以下のjqueryがこれを行うための最良の方法ではないことを認識しています。正しい方向へのガイダンスは大歓迎です。
Jquery:
$(function() {
$("#drop1").click(function() {
$(".sub1").toggleClass("submenu");
});
});
$(function() {
$("#drop2").click(function() {
$(".sub2").toggleClass("submenu");
});
});
$(function() {
$("#drop3").click(function() {
$(".sub3").toggleClass("submenu");
});
});
CSS:
ul {width:100%; list-style: none; display:block;}
ul li {display:inline-block; width: 20%; height: 40px; float:left; background: #ccc; text-align:center;}
ul li a {display:block; width:100%; height: 40px; position:relative;}
.sub1, .sub2, .sub3 {width:300px; margin: -40px 0 0 0; position:absolute; z-index:-1;
transition: margin 0.2s ease;
-moz-transition: margin 0.2s ease;
-webkit-transition: margin 0.2s ease;
-o-transition: margin 0.2s ease;
-ms-transition: margin 0.2s ease;}
.submenu {margin:0; background: #666;}
.sub1 li, .sub2 li, .sub3 li {text-align:center; width: 33%;}
HTML:
<ul>
<li>normal</li>
<li><a id="drop1" href="#">drop</a>
<ul class="sub1">
<li>drop</li>
<li>drop</li>
<li>drop</li>
</ul>
</li>
<li><a id="drop2" href="#">drop</a>
<ul class="sub2">
<li>drop</li>
<li>drop</li>
<li>drop</li>
</ul>
</li>
<li>normal</li>
<li><a id="drop3" href="#">drop</a>
<ul class="sub3">
<li>drop</li>
<li>drop</li>
<li>drop</li>
</ul>
</li>
</ul>