如何在DOCUMENT外部点击时隐藏UL?

时间:2015-05-21 20:24:03

标签: 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.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();
                }
            });
        });
    }
});

1 个答案:

答案 0 :(得分:0)

我在你的代码中发现了几个错误:

  • 首先将$(document).click()事件移出每个循环之外。否则,系统会根据您网页上的menu>li次数附加多次此事件。
  • 其次,您undefined来电alert(target.attr('class')); $(document).click(function (event) {});的原因可能是您没有为点击事件提供参数。将您的代码更改为:

<TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:textColor="#00FF00" android:typeface="monospace" android:text="@string/hello" />