我在查询中创建一个弹出窗口。悬停弹出窗口一切顺利。当用户的鼠标离开div关闭它时,我看到计时器启动。如果他在定时器完成之前再次进入div,则定时器被清除。
这没关系,但是如果用户点击了div呢?我希望那也关闭div。唯一的问题是我不想将点击事件附加到页面上的包装器(因为它包含弹出菜单)。我已经看到了用透明div包装整个屏幕的技术,然后附加一个click事件来命中。尽管这可能有效,但如果用户点击隐藏的div打算单击链接,则会使用户感到困惑。他必须两次点击链接。一旦两个关闭div(隐藏链接),另一个时间实际点击思考。此外,您松散连接到页面上任何蒙版元素的鼠标光标(例如链接光标指针等)。
必须有一种方法可以检查用户是否在没有模态的情况下单击了div而没有将事件附加到整个页面(包括页面包装器和子元素)。
onclicksomewhereelse = “closeme();”
洛尔。
答案 0 :(得分:4)
假设:
<div id="dialog">...</div>
和
#dialog { display: none; }
使用:
$(document).click(function() {
if ($(this).parents("#dialog").length > 0) {
$("#dialog").hide();
}
});
这不会干扰您拥有的其他click()
处理程序。