Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/366.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 在元素外部单击时,不会调用on(“模糊”)_Javascript_Html_Jquery_Css - Fatal编程技术网

Javascript 在元素外部单击时,不会调用on(“模糊”)

Javascript 在元素外部单击时,不会调用on(“模糊”),javascript,html,jquery,css,Javascript,Html,Jquery,Css,我有一个按钮,使div可见。当我点击div之外的任何地方时,会有一个监听器再次隐藏它,但它不会被触发。我做错了什么,或者有更好的方法吗 $(“#按钮取消”)。在(“单击”上,函数(e){ console.log(“按钮新建问题单击”); 如果($(“#newIssueMenu”).hasClass(“newIssueMenuHidden”)){ $(“#newIssueMenu”)。删除类(“newIssueMenuHidden”); $(“#newIssueMenu”).addClass(“

我有一个按钮,使div可见。当我点击div之外的任何地方时,会有一个监听器再次隐藏它,但它不会被触发。我做错了什么,或者有更好的方法吗

$(“#按钮取消”)。在(“单击”上,函数(e){
console.log(“按钮新建问题单击”);
如果($(“#newIssueMenu”).hasClass(“newIssueMenuHidden”)){
$(“#newIssueMenu”)。删除类(“newIssueMenuHidden”);
$(“#newIssueMenu”).addClass(“newIssueMenuShown”);
$(“#newissuenumu”).css(“左”,$(this.position().left);
$(“#newIssueMenu”).css(“top”、$(this.outerHeight()+$(this.position().top);
$(“#新发行”).focus();
}否则{
$(“#newissuenumu”)。删除类(“newissuenumown”);
$(“#newIssueMenu”).addClass(“newIssueMenuHidden”);
}
});
$(“#newissuenumu”)。关于(“模糊”,函数(e){
console.log(“newIssueMenu blur”);
$(此).removeClass(“newissueNushown”);
$(this.addClass(“newIssueMenuHidden”);
});
.newissuenumown{
z指数:1;
位置:绝对位置;
左:0;
排名:0;
显示:块;
能见度:可见;
过渡属性:显示、可见性;
过渡时间:0.4s;
}
.新发行的hidden{
显示:无;
可见性:隐藏;
过渡:全部为0.4s;
}

新发行

您需要使用以下选项更改模糊事件:

当元素即将失去焦点时,将触发focusout事件。这个 此事件和模糊的主要区别在于聚焦气泡 而模糊则不然

工作代码段:

$(“#按钮取消”)。在(“单击”上,函数(e){
console.log(“按钮新建问题单击”);
如果($(“#newIssueMenu”).hasClass(“newIssueMenuHidden”)){
$(“#newIssueMenu”)。删除类(“newIssueMenuHidden”);
$(“#newIssueMenu”).addClass(“newIssueMenuShown”);
$(“#newissuenumu”).css(“左”,$(this.position().left);
$(“#newIssueMenu”).css(“top”、$(this.outerHeight()+$(this.position().top);
$(“#新发行”).focus();
}否则{
$(“#newissuenumu”)。删除类(“newissuenumown”);
$(“#newIssueMenu”).addClass(“newIssueMenuHidden”);
}
});
$(“#newissuenumu”)。关于(“focusout”,函数(e){
console.log(“newIssueMenu blur”);
$(此).removeClass(“newissueNushown”);
$(this.addClass(“newIssueMenuHidden”);
});
.newissuenumown{
z指数:1;
位置:绝对位置;
左:0;
排名:0;
显示:块;
能见度:可见;
过渡属性:显示、可见性;
过渡时间:0.4s;
}
.新发行的hidden{
显示:无;
可见性:隐藏;
过渡:全部为0.4s;
}

新发行

“当元素失去焦点时触发模糊事件。此事件和focusout之间的主要区别是focusout冒泡,而blur没有[冒泡事件]。”
div
默认情况下不会有模糊事件,您可能希望将模糊事件添加到
input
或将
tabindex
属性添加到div将启用div的
focus
blur
事件。@YuvarajG这正是我最初想到的原因,但OP似乎期望从输入到父div发生
事件冒泡