Javascript 如何仅在文档外部单击时隐藏UL?
我不确定为什么我会弄错,每次我尝试比较目标时,我都会得到未定义的结果 我做错了什么Javascript 如何仅在文档外部单击时隐藏UL?,javascript,jquery,dom,Javascript,Jquery,Dom,我不确定为什么我会弄错,每次我尝试比较目标时,我都会得到未定义的结果 我做错了什么 menu.find('> li').each(function() { var li = $(this); var ul = li.find('> ul'); var a = li.find('> a'); if(ul.length) { a.click(function(event) { event.preventDef
menu.find('> li').each(function() {
var li = $(this);
var ul = li.find('> ul');
var a = li.find('> a');
if(ul.length) {
a.click(function(event) {
event.preventDefault();
event.stopPropagation();
if(a.hasClass('open')) {
a.removeClass('open');
}
else {
a.addClass('open');
}
ul.toggle();
$(document).click(function() {
var target = $(event.target);
alert(target.attr('class'));
if(!target.is(ul) && !target.is(li) && !target.is(a)) {
ul.hide();
}
});
});
}
});
我在您的代码中发现了几个错误:
- 首先,移动
事件。否则,将根据页面上的$(文档)。在每个循环外单击()
数量多次附加此事件menu>li
- 其次,可能是您在
警报(target.attr('class'))上得到
未定义的原因代码>调用是指您没有为单击事件提供参数。将代码更改为:
$(文档)。单击(函数(事件){})代码>LOL'undefined',抱歉。两个观察:您正在为每个找到的锚添加另一个单击处理程序到文档中?您是否打算让文档单击处理程序使用父范围中的事件
?我不知道你在这里想干什么。