2013-08-30 49 views
0

我试图为我的项目做一个弹出式窗口,当我点击其他地方在文档中时关闭,但问题是当我点击弹出窗口div时它也会关闭。它应该被关闭,当我点击文档中的其他地方而不是div。popup没有正确处理

fiddle here

$(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"); 
    });   
}); 

回答

1

您需要测试点击是发生在弹出内

$("body").click(function (e) { 
    if ($(e.target).closest('.popup').length == 0) { 
     $(".popup").slideUp("fast"); 
    } 
}); 

演示:Fiddle

+0

现在身体单击它不是向上滑动 –

+0

@Riturajratan你需要点击身体...身体的元素很小...所以点击事件本身并没有解雇......问题存在于OPs cod e也 –

+0

现在确定下来它谢谢 –

1

试试这个

$(document).click(function(){ 
if (!$('.popup').is(e.target) && $('.popup').has(e.target).length === 0) { 
     $(".popup").slideUp("fast"); 
} 

}); 

fiddle here

+0

$(document).click(function(){should $(document).click(function(e){ – Shahbaz

1

编辑

我的旧小提琴没有做孔的工作,这里是新一个工程:

http://jsfiddle.net/cuYBD/11/

在拨弄我更换了机身采用了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"); 
    } 
}); 
1

尝试改变:

$("body").click(function(){ 
    $(".popup").slideUp("fast"); 
}); 

要这样:

$(document).click(function(){ 
    $(".popup").slideUp("fast"); 
}); 

$(".popup").click(function(e){ 
    e.stopPropagation(); 
});