javascript - onclick 带有表单的下拉菜单,单击外部关闭

标签 javascript jquery html css

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

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 设置为显示:阻止,并且只有在您重新单击#loginAcc 或#auth 之外的任何其他位置时才能关闭-菜单。

任何帮助都会很棒。谢谢

最佳答案

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

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

关于javascript - onclick 带有表单的下拉菜单,单击外部关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18130439/

相关文章:

javascript - JavaScript 中的双重否定 (!!) - 目的是什么?

javascript - 如何为可重用的 React 表组件分离出 JSON 对象

javascript - JQuery 如何处理 getElementsByClassName 迭代?

javascript - CSS 滚动动画不会在 django 中运行

jquery - 用 css 隐藏 html5 视频控件?

javascript - 我需要数据库中的一个表来实时刷新

asp.net - 本地主机与开发服务器上 IE8 的奇怪显示行为

javascript - 通过 Javascript 插入的 attr 换行的 CSS 伪元素内容值

javascript - 更新到 1.11.0 后,自动完成功能要求您在 iOS 中单击两次

html - 如何将特定的 tr 跳到右边?