UIkit的Dropdown下拉菜单点击外部无法关闭怎么办?
用UIkit的Dropdown组件时,下拉菜单弹出后点击外部区域或按Esc键都关不掉,明明按照文档写了uk-dropdown属性…
尝试过检查HTML结构和初始化代码,发现这样写的:
<button uk-toggle="target: #myDropdown">点击我</button>
<ul id="myDropdown" class="uk-dropdown" uk-dropdown="auto-close: false">
<li><a href="#">选项1</a></li>
</ul>
但控制台没报错就是不响应关闭操作,如果改成auto-close: true反而能正常关闭,但这样又会失去某些场景需求…
auto-close: false设置了确实不会自动关闭,包括点击外部和 Esc 都失效,这是设计行为。你要是想在点击外部的时候手动控制关闭逻辑,不能光靠
auto-close: false,还得自己监听点击事件,然后判断是否点在了 dropdown 外部,再调用关闭方法。你可以这样改:
如果你还希望支持按 Esc 关闭,再加个 keydown 监听:
这样就可以在
auto-close: false的前提下,灵活控制关闭时机,前端这块有时候就是得手动补点逻辑才爽。auto-close: false删了就行,这参数本来就是控制外部点击是否关闭的,设成false就相当于手动管理显示隐藏了,你得自己写逻辑去触发隐藏。