我正在查询中创建一个弹出窗口。悬停时弹出窗口一切正常。当用户的鼠标离开 div 以关闭它时,我让它看到计时器启动。如果他在计时器完成之前再次进入 div,则计时器将被清除。
这很好,但是如果用户点击 div 之外怎么办?我希望它也能关闭 div。唯一的问题是我不想将单击事件附加到页面上的包装器(因为它包括弹出菜单)。我见过用透明div包裹整个屏幕,然后附加一个点击事件来点击的技术。尽管这可能有效,但如果用户单击隐藏的 div 并打算单击链接,则会使用户感到困惑。他必须点击该链接两次。一旦两次关闭 div(隐藏链接),另一次实际单击思考。此外,您还会失去附加到页面上任何屏蔽元素的鼠标光标(例如链接光标指针等)。
必须有一种方法来检查用户是否在没有模式的情况下单击了 div,并且没有将事件附加到整个页面(包括页面包装和子元素)。
onclicksomewhereelse="closeme();"
哈哈。
最佳答案
假设:
<div id="dialog">...</div>
和:
#dialog { display: none; }
用途:
$(document).click(function() {
if ($(this).parents("#dialog").length > 0) {
$("#dialog").hide();
}
});
这不会干扰您拥有的其他 click()
处理程序。
关于jQuery:如果用户点击 div 之外,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2895435/