Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.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,我正在尝试改进菜单的界面: 我认为在单击时切换是很好的,但我确实认为如果用户单击其他任何地方,例如屏幕的下角,菜单应该切换关闭(如果尚未关闭) $(document).ready(function () { $('#nav li').mousedown(function () { $('ul #items').toggle(100); }); }); 如何以一种尽可能有效的方式实现这一点?如果菜单打开,我们是否需要跟踪每一次鼠标单击并查看它是否在菜单上?您需要

我正在尝试改进菜单的界面:

我认为在单击时切换是很好的,但我确实认为如果用户单击其他任何地方,例如屏幕的下角,菜单应该切换关闭(如果尚未关闭)

$(document).ready(function () {
    $('#nav li').mousedown(function () {
        $('ul #items').toggle(100);
    });
});

如何以一种尽可能有效的方式实现这一点?如果菜单打开,我们是否需要跟踪每一次鼠标单击并查看它是否在菜单上?

您需要将单击处理程序附加到关闭菜单的
文档上:

$('#nav li').click(function (e) {
    e.stopPropagation();
    $('ul #items').toggle(100);
});

$(document).click(function() {
    $('#items').hide();
});
请注意,打开链接时需要
stopPropagation
,以停止事件到达文档本身

$(document).ready(function () {
    $('#nav li').mousedown(function (event) {
        event.stopPropagation();
        $('ul #items').toggle(100);
    });
     $(document).mousedown(function(e) {
         $('ul #items').css('display','none'); //make all inactive`enter code here`
    });
});