Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/479.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当孩子们聚焦时,焦点控制下拉菜单关闭_Javascript_Jquery_Html_Focus - Fatal编程技术网

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;
}

点击我
现在单击此按钮不会关闭菜单!
单击此按钮不起作用