jquery点击div外面关闭,问题

时间:2017-03-28 21:17:47

标签: jquery

我的网站上有一个菜单按钮(" showmenu"),点击后会打开菜单div。我也有代码关闭菜单,如果用户点击它(我在这里找到)

// code to open / close menu
$(document).ready(function() {
    $('#showmenu').click(function() {
            $('.menu').slideToggle("fast");
    });

// code for clicking outside menu to close
$(document).mouseup(function (e) {
    var container = $('.menu');
    if (!container.is(e.target) && container.has(e.target).length === 0) {
        container.hide();
        }
    });

});

这段代码给了我一些问题。我可以使用" showmenu"打开菜单。按钮,但我无法再次单击该按钮关闭它。我可以关闭菜单的唯一方法是点击它外面。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

这一行:

container.has(e.target).length === 0

检查点击目标是否不是容器元素的父级。但是,通过检查长度是否等于零,当您想要检查它是否为 true 时,这将评估为 false ,即,当您&#时隐藏容器39;点击了其中一位父母。

此外,您需要更改

e.target 

$(e.target) 

将其视为jquery对象。

将行更改为

container.has($(e.target)).length > 0

它应该有效!