我有一个水平列表菜单,单击该菜单可切换嵌套列表的可见性。功能几乎可以工作,我点击菜单和可见性切换。但是,当我在刚刚出现的元素内部单击时,嵌套列表的可见性将恢复为原始状态并被隐藏。当元素需要交互时(无论是表单还是其他菜单),这有点困难。
这是我到目前为止的代码:
/* 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()函数尝试删除它,但没有任何更改,并且在单击时仍会删除下拉列表。
答案 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;
});