メニューアイコンをクリックすると開くか閉じるかを切り替えるグローバルスタイルのドロップダウンを作成しようとしていますが、ページ上の他の場所をクリックすると閉じることもできます。このドロップダウンを開いたり閉じたりする方法は、ドロップダウンの親に「open」というクラスを追加または削除することです。
(より明確にするために)その考え方は、ドロップダウンの通常のクラスに次のように表示されることです。その上に設定されますが、クラスが「open」の子孫である場合は、display:block;があります。
ですから、これまでのところ、これまでのところ、「openable」は「open」クラスを追加するためにクリックできる「親」要素のクラスです。
<script>
$(document).ready(function(){
$('.openable').click(function(){
if($(this).hasClass("open")){
$(this).removeClass("open");
}
else{
$(this).addClass("open");
}
});
});
それ自体で実際に正常に機能します-ドロップダウンに対して十分に適切なトグルとして機能します。もちろん、他の場所をクリックしてもドロップダウンは閉じません。
私の明らかに機能していないクローズスクリプトは次のとおりです。
<script>
$(document).ready(function(){
$(document).click(function(event) {
var clicked = $(event.target);
if(clicked.hasClass(".open")){
}
else{
if($(".open").length > 0){
$(".open").each(function(){
$(this).removeClass("open");
});
}
}
});
});
</script>
そのスクリプトがページにあると、ドロップダウンは完全に機能しなくなり、コンソールは私が作業するためのエラーをスローしません。
これを行うためのより良い方法はありますか?
ありがとう
編集:htmlマークアップは次のようなものです
<li class="navItem dropdown openable">
<span><img src="img/settings.png"></span>
<ul class="subNav hubDrop">
<li>Nav item 1</li>
<li>Nav item 2</li>
<li>Nav item 3</li>
<li>Nav item 4</li>
</ul>
</li>
それぞれについて。別のul内にあるliタグ(これは基本的にドロップダウンメニュー用であることを忘れないでください)