Javascript jquery遇到not()和下拉列表问题
我有一个水平列表菜单,单击该菜单可切换嵌套列表的可见性。该功能几乎可以正常工作,我单击菜单并切换可见性。但是,当我在刚刚出现的元素中单击时,嵌套列表的可见性将恢复到原始状态并隐藏。当元素需要交互时,无论是表单还是其他菜单,这都有点困难 以下是我目前掌握的代码:Javascript jquery遇到not()和下拉列表问题,javascript,jquery,dom,Javascript,Jquery,Dom,我有一个水平列表菜单,单击该菜单可切换嵌套列表的可见性。该功能几乎可以正常工作,我单击菜单并切换可见性。但是,当我在刚刚出现的元素中单击时,嵌套列表的可见性将恢复到原始状态并隐藏。当元素需要交互时,无论是表单还是其他菜单,这都有点困难 以下是我目前掌握的代码: /* menu */ var menu = function(clicktarget, dropdown){ $(clicktarget).click( function(event){ // stop bubb
/* 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函数来删除它,但没有任何变化,而且当单击下拉列表时,它仍然会被删除。试试看
$('body').click( function(e){
//hide when click anywhere out the menu
var $target = $(e.target)
if(!$target.closest(dropdown).length){
$(dropdown).hide();
}
return false;
});
你能提供你的JSFIDLE代码吗?仅供参考,dropdown和clicktarget的值已经是一个jQuery对象了,所以没有理由再次将其传递给jQuery。这与执行以下操作相同:$$'auth-menu'。隐藏相当奇怪的内容。$'body'。而不是$下拉菜单。单击。。。基本意思是:选择只有一个btw的所有主体元素,并删除所有等于下拉列表的元素,即具有ID auth菜单的所有元素。我假设body元素没有该ID,因此它不会从选择中删除。然后单击事件处理程序被绑定到body元素。这不是忽略源自特定元素的事件的正确方法。