点击菜单以外的任何地方时隐藏菜单。

15 浏览
0 Comments

点击菜单以外的任何地方时隐藏菜单。

当我点击图标时,会出现一个菜单。目前,我可以通过点击“关闭”图标来关闭菜单,但我希望当菜单可见时,可以通过点击菜单以外的任何地方来关闭它。\n这是一个jsFiddle链接:http://jsfiddle.net/budapesti/3v5ym2bp/3/\n例如下面的代码不起作用:\n

$(document).click(function() { 
        if($('.menu').is(":visible")) {
            $('.menu').hide()
        }      
});

\n我找到了类似的问题,例如jQuery:单击元素外的任何地方隐藏元素如何检测元素外的点击事件?,但无法使这些解决方案对我起作用。\n


\n编辑:我想知道is(\":visible\")是否适用于使用jQuery \"animate\"方法的情况?

0
0 Comments

当点击菜单之外的任何地方时,隐藏菜单的问题是因为需要在菜单显示后,在文档上绑定一个点击事件,该事件将确保任何点击菜单之外的地方都会关闭菜单。

解决方法是在文档上绑定一个点击事件,并在菜单显示后执行以下操作:

1. 检查点击事件的目标元素是否是菜单或关闭按钮的子元素;

2. 如果目标元素不是菜单的子元素或是关闭按钮的子元素,则调用关闭菜单的函数;

3. 在关闭菜单后,解绑文档上的点击事件。

这里需要评估事件对象以及触发事件的元素,如果元素在菜单内(除了关闭按钮),则不进行任何操作;如果元素在菜单外,则关闭菜单。关闭菜单的相关操作放在一个单独的函数中,并在关闭后解绑文档上的点击事件。

具体的代码示例可以在下面的链接中查看:

http://jsfiddle.net/3v5ym2bp/15/

可以点击下面的链接查看演示效果:

working demo

0
0 Comments

问题出现的原因:当点击菜单以外的区域时,菜单仍然显示出来,没有隐藏起来。

解决方法:在点击菜单以外的区域时,隐藏菜单。

代码示例:

MENU

.menu {
    position: fixed;
    width: 285px;
    height: 100%;
    left: -285px;
    background: #202024;
    z-index: 1;
}
.glyphicon-remove, ul {
    color: #fff;
    padding: 10px;
}
/* 添加了一个不可见的块 */
.inv {
    display:none;
    width:100%;
    height:100%;
    position:fixed;
    margin:0;
}

"use strict";
var main = function () {
    $('.icon-menu').click(function () {
        $('.icon-menu').hide();
        $('.inv').show(); //添加
        $('.menu').animate({
            left: "0px"
        }, 200);
    });
    //添加
    $('.inv').click(function () {
        $('.inv').hide();
        $('.menu').animate({
            left: "-285px"
        }, 200);
        $('.icon-menu').show();
    });
    $('.closed').click(function () {
        $('.inv').hide();//添加
        $('.menu').animate({
            left: "-285px"
        }, 200);
        $('.icon-menu').show();
    });
};
$(document).ready(main);

另一个简单的例子:[http://jsfiddle.net/3v5ym2bp/17/](http://jsfiddle.net/3v5ym2bp/17/)

0
0 Comments

当点击窗口中除菜单以外的任何地方时,隐藏菜单的问题产生的原因是通过使用事件冒泡,在窗口的任何地方点击时调用关闭函数。

解决方法是更新代码并使用事件冒泡。具体的解决方法可以参考以下链接:

http://jsfiddle.net/rahulrchaurasia/3v5ym2bp/19/

0