1
thisのような簡単なカスタムCSSドロップダウンメニューがあります。ドロップダウンメニューボタンをクリックすると、その下のコンテナの表示が切り替えられます(絶対配置されます)。私は、フォーカスアウトもメニューを隠すHTML select要素の動作を模倣しようとしています。そうする最良の方法は何でしょうか?ドロップダウンコンテンツのdivにfocusoutイベントハンドラを追加すると、ボタン自体をクリックするとダブルトリガ(フォーカスアウトとトグル)が発生します。 CSSドロップダウンメニュー
$('.dropdown-btn').on('click', function (e) {
\t $('.dropdown-content').toggleClass('hide');
});
$('.dropdown-btn').focusout(function (e) {
$('.dropdown-content').addClass('hide');
});
$('a').on('click', function (e) {
// wont run
console.log(this);
});
.dropdown-container {
position: relative;
}
.dropdown-btn {
width: 70px;
background: cyan;
padding: 12px;
}
.dropdown-content {
position: absolute;
}
.dropdown-content a {
margin-bottom: 1px;
background: cyan;
display: block;
}
.hide {
display: none;
}
<script
src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js">
</script>
<div class="dropdown-container">
<div class="dropdown-btn" tabindex="-1">Dropdown</div>
<div class="dropdown-content hide">
<a>Dropdown item 1</a>
<a>Dropdown item 2</a>
</div>
</div>
申し訳ありませんが、私は私のjsfiddleのtabindexを追加するのを忘れフォーカスイベントに
outline
を削除するには、これはやりました。任意のドロップダウン要素をクリックすると、あなたのソリューションはドロップダウンを隠します(リンクやイベントのクリックハンドラがあれば、彼らはうまく動作しません)。私は質問のjsfiddleをあなたのフォークでうまく動かしました。 –@JorgeLazo更新された回答を参照してください... – kukkuz
それはオーバーレイメニュー(したがって位置:絶対)である必要があります他の選択肢がありますか? –