jquery问题与not()和下拉列表

时间:2013-08-12 09:05:24

标签: javascript jquery dom

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

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

/*  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()函数尝试删除它,但没有任何更改,并且在单击时仍会删除下拉列表。

1 个答案:

答案 0 :(得分:3)

尝试

$('body').click( function(e){
    //hide when click anywhere out the menu
    var $target  = $(e.target)
    if(!$target.closest(dropdown).length){
        $(dropdown).hide();
    }
    return false;
});