Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.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 - Fatal编程技术网

Javascript “最好的方法”;单击“离开”;从下拉菜单?

Javascript “最好的方法”;单击“离开”;从下拉菜单?,javascript,jquery,Javascript,Jquery,可能重复: 我有一个下拉菜单,在单击时显示。当用户点击离开它时,它就会消失 对于点击即时通讯,请使用: $("#title").click(function() { dropdown_show(); ); $('body').click(function(e) { if ((!$(e.target).is('#title'))&&(!$(e.target).is('#dropdown'))) { dropdown_hide(); }

可能重复:

我有一个下拉菜单,在单击时显示。当用户点击离开它时,它就会消失

对于点击即时通讯,请使用:

$("#title").click(function() {
    dropdown_show(); 
);
$('body').click(function(e) {
    if ((!$(e.target).is('#title'))&&(!$(e.target).is('#dropdown'))) {
        dropdown_hide();
    }   
});
但当用户点击时,我会使用:

$("#title").click(function() {
    dropdown_show(); 
);
$('body').click(function(e) {
    if ((!$(e.target).is('#title'))&&(!$(e.target).is('#dropdown'))) {
        dropdown_hide();
    }   
});

有没有更好的方法可以知道用户何时单击身体,而不必在每次用户单击身体时运行事件?

您可能可以使用焦点事件,因此如果它不在焦点中,您可以将其隐藏。以下是

您只能在菜单单击事件中设置正文单击事件,并在单击正文单击事件时使用.unbind删除正文单击事件


您可能需要使用.bind,并使用一个命名空间:

仅供参考,
$(e.target).is(“#title”)
更容易写成
e.target.id!='标题“
。您可能希望使用
。一个
,而不是
。单击隐藏上的
。您可以在节目中附加它,然后使用捕获的变量来确定您是否仍在节目中,而不是再次运行选择器。