ホバーではなくクリックでアクティブになるドロップダウンメニューを作成しようとしています。これまでのところ、少しのJavaScriptでオンクリックが機能していますが、サブメニューがうまく表示され、別のメニューをクリックすると他のサブメニューが非表示になりますが、親がクリックされた場合にサブメニューを非表示にする方法がわかりません。
EG このJS フィドル では、「親 1」をクリックしてその子を表示できます。「親 2」をクリックすると、親 1 の子が非表示になり、親 2 の子が表示されます。しかし、親 1 の子が表示されている場合は、親 1 をもう一度クリックして非表示にしたい (または、子以外のどこでもよい)。
各親メニューとサブメニューに個別のクラスまたは ID が与えられている例を見てきました。cmsで動作する必要があるため、これは避けたいと思います。
ここに私が持っている基本的なコードがあります
HTML:
<div>
<ul>
<li><a href="#">Parent 1</a>
<ul>
<li><a href="#">Parent 1 » Child 1</a></li>
<li><a href="#">Parent 1 » Child 1</a></li>
<li><a href="#">Parent 1 » Child 1</a></li>
</ul>
</li>
<li><a href="#">Parent 2</a>
<ul>
<li><a href="#">Parent 2 » Child 2</a></li>
<li><a href="#">Parent 2 » Child 2</a></li>
<li><a href="#">Parent 2 » Child 2</a></li>
</ul>
</li>
<li><a href="#">Parent 3</a>
<ul>
<li><a href="#">Parent 3 » Child 3</a></li>
<li><a href="#">Parent 3 » Child 3</a></li>
<li><a href="#">Parent 3 » Child 3</a></li>
</ul>
</li>
</ul>
ジャバスクリプト:
$(document).ready(function () {
$("li").click(function () {
$('li > ul').hide();
$(this).children("ul").toggle();
});
});
CSS はおそらく必要ありませんが、必要に応じて調整します