朋友们,我想要像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');
}
}
});
});
答案 0 :(得分:0)
您不知道点击了什么。它可能是下降本身。它可能是下拉内部的一个链接。它可能是下拉列表中链接内的textnode。所以使用parent
只能让你从目标上升一级。实际上,在这种情况下,target
将body
为body
,因为它会传播到if(!$(e.currentTarget).closest('.profile-mgnt').length)
,因此也无济于事。 See this article about target vs currentTarget
所以,你真正想要的是说“如果我点击的内容没有带有类profile-mgnt的祖先,那么我想关闭(删除该类)”。
像这样:removeClass
。最接近过滤器标准上的祖先链匹配,在这种情况下具有类.profile-mgnt 的祖先。如果找不到,那么您没有点击 profile-mgnt 范围内的任何地方,因此{{1}}。