我试图为我的项目制作一个弹出窗口,当我点击文档中的其他地方时它会关闭,但问题是当我点击popover div时它也会关闭。当我点击文档中的其他地方而不是div时,它应该被关闭。
$(document).ready(function(){
jQuery.fx.speeds = {
fast: 120
};
$("#popup-img").click(function (e) {
if ($(".popup").is(":hidden")) {
$(".checkbox input").removeAttr("checked");
$(".popup").slideDown("fast");
}
else {
$(".popup").slideUp("fast");
}
e.stopPropagation();
});
$("body").click(function(){
$(".popup").slideUp("fast");
});
});
答案 0 :(得分:1)
您需要测试点击是否发生在弹出窗口
中$("body").click(function (e) {
if ($(e.target).closest('.popup').length == 0) {
$(".popup").slideUp("fast");
}
});
演示:Fiddle
答案 1 :(得分:1)
试试这个
$(document).click(function(){
if (!$('.popup').is(e.target) && $('.popup').has(e.target).length === 0) {
$(".popup").slideUp("fast");
}
});
答案 2 :(得分:1)
修改
我的老小提琴没有完成这项工作,这是新的工作:
在小提琴中,我用div #mybody替换了身体。
将你的body.click功能更改为:
$("body").click(function(e){
var bodyfound = false;
$(e.target).parents().each(function() {
if($(this).is(".popup")) {
bodyfound=true;
return;
}
});
if(!bodyfound) {
$(".popup").slideUp("fast");
}
});
答案 3 :(得分:1)
尝试更改:
$("body").click(function(){
$(".popup").slideUp("fast");
});
对此:
$(document).click(function(){
$(".popup").slideUp("fast");
});
$(".popup").click(function(e){
e.stopPropagation();
});