如何使用jQuery检测单击哪个元素?

时间:2014-03-04 13:57:10

标签: jquery hide

朋友们,我想要像Facebook一样的下拉菜单。当我点击它想要打开的菜单时,如果我再次点击它想要关闭。 当它打开时,如果我点击任何其他区域,那么它也想要关闭....请帮助我。

我使用了jquery,如下所示:

$(document).ready(function ()
 {
    $('.profile').on('click', function ()
    {
        $('.profile-mgnt').fadeToggle("slow").toggleClass('act_drop');
    });
    $('body').on('click', function (e)
    {
        if ($('.profile-mgnt').hasClass('act_drop'))
        {
            if (!$(e.target).parent().hasClass('profile-mgnt'))
            {
                $('.profile-mgnt').removeClass('act_drop');
            }
        }
    });
});

1 个答案:

答案 0 :(得分:0)

您不知道点击了什么。它可能是下降本身。它可能是下拉内部的一个链接。它可能是下拉列表中链接内的textnode。所以使用parent只能让你从目标上升一级。实际上,在这种情况下,targetbodybody,因为它会传播到if(!$(e.currentTarget).closest('.profile-mgnt').length),因此也无济于事。 See this article about target vs currentTarget

所以,你真正想要的是说“如果我点击的内容没有带有类profile-mgnt的祖先,那么我想关闭(删除该类)”。

像这样:removeClass。最接近过滤器标准上的祖先链匹配,在这种情况下具有类.profile-mgnt 的祖先。如果找不到,那么您没有点击 profile-mgnt 范围内的任何地方,因此{{1}}。