弹出窗口未正确处理

时间:2013-08-30 11:15:07

标签: jquery popover

我试图为我的项目制作一个弹出窗口,当我点击文档中的其他地方时它会关闭,但问题是当我点击popover div时它也会关闭。当我点击文档中的其他地方而不是div时,它应该被关闭。

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

4 个答案:

答案 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");
 }

});

fiddle here

答案 2 :(得分: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");
    }
});

答案 3 :(得分:1)

尝试更改:

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

对此:

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

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