Javascript 使用“单击关闭”菜单本身关闭菜单

Javascript 使用“单击关闭”菜单本身关闭菜单,javascript,jquery,javascript-events,Javascript,Jquery,Javascript Events,谈到JavaScript,我不是最好的,我一直在寻找解决方案。我在这里看到过类似的问题,但当我尝试在我的案例中实现它时,它要么破坏了菜单,要么就是没有任何区别 我试图得到一个菜单,它一次点击就打开,不仅通过重复点击父菜单选项卡来关闭,而且通过点击菜单外的任何地方来关闭 我的代码是: var toggleUpdatesPulldown = function(event, element, user_id) { if( element.className=='updates_pulldown

谈到JavaScript,我不是最好的,我一直在寻找解决方案。我在这里看到过类似的问题,但当我尝试在我的案例中实现它时,它要么破坏了菜单,要么就是没有任何区别

我试图得到一个菜单,它一次点击就打开,不仅通过重复点击父菜单选项卡来关闭,而且通过点击菜单外的任何地方来关闭

我的代码是:

var toggleUpdatesPulldown = function(event, element, user_id) {
    if( element.className=='updates_pulldown' ) {
        element.className= 'updates_pulldown_active';
        showNotifications();
    } else {
        element.className='updates_pulldown';
    }
}

这个片段位于更多的JavaScript中间,这是默认的工作版本。“从用户单击”会更改菜单容器的类名,该类名决定是否显示菜单容器。在这里的另一篇文章中,我尝试实现以下内容,但没有成功尝试允许单击关闭来更改类名:

var toggleUpdatesPulldown = function(event, element, user_id) {
    if( element.className=='updates_pulldown' ) {
        element.className= 'updates_pulldown_active';
        showNotifications();
    } else {
        element.className='updates_pulldown';
    }

    ev.stopPropagation();

    $(document).one('click', function() {
        element.className='updates_pulldown';
    });
} 

对解决这个问题有什么建议吗?我想学习更多的JavaScript,因为我似乎越来越多地使用它。

我希望您仍然在寻找解决方案。这是一个有效的演示

我还添加了几个事件,可以在打开或关闭时使用

$('#menu>ul>li>a').on('open', function(e) { 
     console.log('menu open', this) 
}).on('close', function(e) { 
      console.log('menu closed', this) 
})

抱歉,这取决于jQuery。懒得编写本机版本:。同样,这并没有在IE中测试过,但如果不测试的话,要让它在IE上工作应该不会太难

欢迎光临!请做一个功能演示,以防你没有注意到。。。您有$document。单击一下。。。这应该是打开的,而不是一个。如果你真的想使用jQuery,你可以使用$.mouseleave来处理打开/关闭。@BobDavies-有一个函数,每个元素只触发一次。啊,我不知道,谢谢@JaredFarrish:
$('#menu>ul>li>a').on('open', function(e) { 
     console.log('menu open', this) 
}).on('close', function(e) { 
      console.log('menu closed', this) 
})