3 回答
TA贡献1776条经验 获得超12个赞
TA贡献1806条经验 获得超5个赞
要理解为什么在向窗口/文档/(无论什么父元素)添加单击事件处理程序时看到菜单立即关闭,有必要从事件捕获和冒泡的讨论开始。顺序是捕获 -> 单击捕获 -> 传播。您单击一个元素,它首先在窗口上被捕获,然后一直沿着 DOM 向下到达最具体的 DOM 元素。然后它会一路“冒泡”备份触发事件处理程序。
在您的场景中发生的情况是,菜单上的单击事件不仅在该元素上触发处理程序,而且还在每个父元素上触发处理程序。一种可能的解决方案是event.stopPropagation()
向菜单添加单击事件处理程序,以便单击事件不会冒泡到您附加“关闭菜单”功能的任何父 DOM 元素。
TA贡献2021条经验 获得超8个赞
https://jsfiddle.net/f21vnq5s/1/
您应该首先设置菜单的高度,然后在文档中检查单击是否在标题中
它应该与 jquery 一起工作
$(document).mouseup(function (e)
{
var searchcontainer = $(".header");
if (!searchcontainer.is(e.target) // if the target of the click isn't the container...
&& searchcontainer.has(e.target).length === 0) // ... nor a descendant of the container
{
nav.style.visibility = "";
}
});
- 3 回答
- 0 关注
- 118 浏览
添加回答
举报