1

我有一个水平列表菜单,单击它会切换嵌套列表的可见性。该功能几乎可以工作,我单击菜单并切换可见性。但是,当我在刚刚出现的元素内单击时,嵌套列表的可见性会恢复到原始状态并被隐藏。当元素需要交互时(无论是表单还是其他菜单),这有点困难。

这是我到目前为止的代码:

/*  menu */
var menu = function(clicktarget, dropdown){
    $(clicktarget).click( function(event){
        // stop bubbling
        event.stopPropagation();
        //show
        $(dropdown).toggle();
        return false;
    });

    $('body').not($(dropdown)).click( function(){
        //hide when click anywhere out the menu
        $(dropdown).hide();
        return false;
    });
}
menu($('#loginAcc'),$('#auth-menu'));

如您所见,我曾尝试使用 .not() 函数来尝试将其删除,但没有任何变化,并且在单击下拉菜单时仍会被删除。

4

1 回答 1

2

尝试

$('body').click( function(e){
    //hide when click anywhere out the menu
    var $target  = $(e.target)
    if(!$target.closest(dropdown).length){
        $(dropdown).hide();
    }
    return false;
});
于 2013-08-12T09:07:48.570 回答