0

我有一个带有表单元素的下拉菜单。菜单元素设置为

display:none 

当点击元素之外的任何东西时......或者至少我是这么认为的。

这是我的小功能

$(function(){
    $('#loginAcc').click( function(event){
        event.stopPropagation();
        //show
        $('#auth-menu').css('display', 'block');
    });

    $(document).click( function(){
        //hide when click anywhere out the menu
        $('#auth-menu').hide();
    });
})

我遇到的问题是,当我在元素内部单击时它也会关闭,这使得填写表格非常困难,几乎不可能。

#loginAcc

是一个被点击的水平列表项,并且

#auth-menu

如果我冒险猜测,我想认为 .toggle() 是罪魁祸首,但这是一个纯粹的猜测,如果我要重新实现它,我什至不知道从哪里开始(一只小鸟告诉我无论如何,它已被排除在规范之外)。

我想要发生的是,当您单击#loginAcc 列表项时,#auth-menu 被设置为 display:block,并且只有在您重新单击#loginAcc 或#auth-menu 之外的任何其他位置时才能关闭。

任何帮助都会很棒。谢谢

4

1 回答 1

2

使用not()选择器排除菜单:

$(document).not('#auth-menu').click( function(){
    //hide when click anywhere out the menu
    $('#auth-menu').hide();
});
于 2013-08-08T15:48:48.387 回答