1
我有一個簡單的自定義CSS下拉菜單,如this。點擊下拉菜單按鈕將切換下面的容器顯示(絕對定位)。我試圖模仿HTML選擇元素的行爲,其中focusout也隱藏菜單。最好的辦法是什麼?如果我將聚焦事件處理程序添加到下拉內容div,單擊該按鈕本身將導致一個雙重觸發器(聚焦和切換)。重點突出的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>
對不起,我忘了補充tabindex屬性在我的jsfiddle。如果你點擊任何下拉元素,你的解決方案將隱藏下拉菜單(假設我有一個鏈接或任何事件的點擊處理程序,它們將不起作用),我已經用你的叉子解決了問題的jsfiddle。我希望我的問題現在更清楚 –
@JorgeLazo看到更新的答案... – kukkuz
它需要是一個覆蓋菜單(因此位置:絕對)你有任何其他的選擇? –