我有一个<a href="#" id="btn">Show Box</a>
somwhere在我的DOM。另外我有一个div#overlay
,默认设置为display:none;
。jQuery:隐藏()框时点击身体,但不()元素本身?
// Toggle Overlay
$('#btn').click(function(e) {
e.preventDefault();
$('#overlay').toggle();
})
$('body').not('#btn, #overlay').click(function() {
if ($('#overlay').is(':visible')) $('#overlay').hide();
});
为什么这不起作用?我希望#btn
在点击时切换()覆盖。但是,当叠加层可见时,单击文档上的任意位置(除#btn
本身或#overlay
外),我希望叠加层也被隐藏。
谢谢。唯一的问题是覆盖层有孩子,当点击叠加层关闭时,因为它也会触发身体点击。或者还有其他一些问题。 – matt 2013-03-13 14:22:19
任何想法为什么会发生? – matt 2013-03-13 14:45:47