jquery - jQuery 检测何时在菜单中滑动,或者他的孩子在使用选项卡导航时失去焦点
问题描述
大家好,我正在寻找一种解决方案,以在使用键盘(选项卡或左右箭头)导航时关闭滑入式菜单。
我可以打开菜单并在其中导航没有问题。但是我想检测$('#menu')
作为子元素的元素或任何元素何时$('#menu')
失去焦点并通过删除 class 来关闭滑入式菜单$('.open')
。
我试过$('#menu').focusOut()
了,但它只检查$('#menu')
自身的焦点,所以当我在子元素中时,li
它$('#menu')
会关闭菜单,这是我不希望发生的。
解决方案
我找到了一个非常适合我的情况的解决方案。当我点击打开菜单时,我添加了一个事件监听器,它调用了 onFocus 函数。
该函数检查具有焦点的元素是否是$('#menu')
关闭菜单的子元素并删除事件侦听器。
document.addEventListener('focusin', onFocus);
function onFocus(e) {
if(!$('#menu').find(e.target).length) {
$('#menu').fadeToggle();
$('#menu').toggleClass("open");
document.removeEventListener('focusin', onFocus);
}
}
推荐阅读
- python - 如何生成具有过期时间的动态短网址?
- azure-bot-service - Azure QnA 机器人服务错误:CreateAppOnlySteps
- django - 在 Heroku 上编辑 Django 文件而不编辑我的数据库文件
- python - 带有for循环的numpy数组摘要
- javascript - Firebase Analytics - 基于 file:// 的环境支持
- angular - 使用 Jasmin 的 Angular 8 单元测试 EventSource
- javascript - JSON中的Highcharts堆积柱形图没有绘制正确的值
- python - 熊猫 to_excel 是压倒一切的价值观
- android - 导航资源显示未找到 NavHostFragments
- swift - 从下拉菜单中选择一个选项并将其放入特定位置的数组