当用户点击页面上除框区域以外的任何位置时,我想在页面中关闭一个小弹出框。怎么找到它?
答案 0 :(得分:17)
$(document.body).click(function(e){
var $box = $('#little-pop-up-box-id');
if(e.target.id !== 'little-pop-up-box-id' && !$.contains($box[0], e.target))
$box.remove();
});
e.target
是收到DOM node
的{{1}}。我首先检查该元素的click event
是否不是我们正在寻找的那个。
第二次检查ID
确保我们要隐藏的元素中的!$.contains($box[0], e.target)
。
嗯,我猜这是插件时间! :
DOM node of invocation
<强>概要强>
(function($){
$.fn.outside = function(ename, cb){
return this.each(function(){
var $this = $(this),
self = this;
$(document.body).bind(ename, function tempo(e){
if(e.target !== self && !$.contains(self, e.target)){
cb.apply(self, [e]);
if(!self.parentNode) $(document.body).unbind(ename, tempo);
}
});
});
};
}(jQuery));
示例:强>
答案 1 :(得分:4)
@ jAndy的解决方案很好,但我也想提到Ben Alman's "Outside Events" plugin。以下是使用它的快速示例:
$("#popup").bind("clickoutside", function(event){
$(this).hide();
});
答案 2 :(得分:0)
抓取全局点击事件,或在此弹出框下设置透明div 100%/ 100%。
答案 3 :(得分:0)
$("html").click(function(){
//close popup
});