Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何仅在文档外部单击时隐藏UL?_Javascript_Jquery_Dom - Fatal编程技术网

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',抱歉。两个观察:您正在为每个找到的锚添加另一个单击处理程序到文档中?您是否打算让文档单击处理程序使用父范围中的
事件
?我不知道你在这里想干什么。