Javascript 当孩子们聚焦时,焦点控制下拉菜单关闭
我有一个下拉菜单,它使用焦点和模糊事件来打开和关闭菜单。目前,除非您关注菜单中的某个元素,否则一切正常,从而导致它关闭,因为触发器元素Javascript 当孩子们聚焦时,焦点控制下拉菜单关闭,javascript,jquery,html,focus,Javascript,Jquery,Html,Focus,我有一个下拉菜单,它使用焦点和模糊事件来打开和关闭菜单。目前,除非您关注菜单中的某个元素,否则一切正常,从而导致它关闭,因为触发器元素。菜单触发器失去焦点 预期的行为是当用户单击.menu trigger元素外部时,菜单关闭,但当前当内部元素被聚焦时,它也会关闭。如果.menu trigger中的元素被聚焦,是否有方法防止菜单关闭 功能菜单打开(选项){ 选项=$.extend(true{ triggerSelector:null, relativeContentSl:“.defaultsel
。菜单触发器失去焦点
预期的行为是当用户单击.menu trigger
元素外部时,菜单关闭,但当前当内部元素被聚焦时,它也会关闭。如果.menu trigger
中的元素被聚焦,是否有方法防止菜单关闭
功能菜单打开(选项){
选项=$.extend(true{
triggerSelector:null,
relativeContentSl:“.defaultselector”,
},选项|{});
const$TRIGGER=$(options.triggerSelector);
$TRIGGER.addClass('is-open').find(options.relativeContentSl).removeClass('hide');
}
功能菜单关闭(选择器){
$(选择器).removeClass('is-open').find('.menu-content').addClass('hide');
}
常量触发器_选择器='。菜单触发器';
常量内容选择器='。菜单内容';
$('body')。在('click','上。菜单触发器:not(.is open)),函数(e){
美诺朋({
触发器选择器:这个,
relativeContentSl:内容选择器,
});
})
$('body')。在('blur',触发器\选择器,函数(){
menuClose(这个);
})
.hide{
显示:无;
}
.菜单内容{
边框:2倍纯红;
填充物:5px;
}
点击我
单击此按钮将关闭菜单
单击此按钮不起作用
我不确定是否要测试触发器元素中的元素是否聚焦,但您可以通过将menuClose()
函数包装为如下方式来检查它是否被悬停:
if (!$(this).is(':hover')) {
menuClose(this);
}
令人惊讶的是,这在手机上也很有效,下面是完整的片段来证明这一点:
功能菜单打开(选项){
选项=$.extend(true{
triggerSelector:null,
relativeContentSl:“.defaultselector”,
},选项|{});
const$TRIGGER=$(options.triggerSelector);
$TRIGGER.addClass('is-open').find(options.relativeContentSl).removeClass('hide');
}
功能菜单关闭(选择器){
$(选择器).removeClass('is-open').find('.menu-content').addClass('hide');
}
常量触发器_选择器='。菜单触发器';
常量内容选择器='。菜单内容';
$('body')。在('click','上。菜单触发器:not(.is open)),函数(e){
美诺朋({
触发器选择器:这个,
relativeContentSl:内容选择器,
});
});
$('body')。在('blur',触发器\选择器,函数(){
如果(!$(this).is(':hover')){
menuClose(这个);
}
});代码>
.hide{
显示:无;
}
.菜单内容{
边框:2倍纯红;
填充物:5px;
}
点击我
现在单击此按钮不会关闭菜单!
单击此按钮不起作用