【发布时间】:2017-09-01 03:10:07
【问题描述】:
我有一个简单的自定义 CSS 下拉菜单,例如 this。单击下拉菜单按钮将切换其下方容器的显示(绝对定位)。我试图模仿 HTML select 元素的行为,其中 focusout 也隐藏了菜单。最好的方法是什么?如果我将焦点事件处理程序添加到下拉内容 div,单击按钮本身将导致双重触发(焦点和切换)。
$('.dropdown-btn').on('click', function (e) {
$('.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>
【问题讨论】:
标签: html css drop-down-menu tabindex jquery-events