2013-08-30 2 views
0

Я пытаюсь сделать popover для моего проекта, он закрывается, когда я нажимаю else, где в документе, но проблема в том, что он также закрывается, когда я нажимаю на popover 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 вас нужно щелкнуть по телу ... элемент body маленький ... так что сам клик не стреляет ... проблема существует в треке OPs e также –

+0

ok down down up спасибо –

1

попробовать этот

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

}); 

fiddle here

+0

$ (document) .click (function() {должен быть $ (document) .click (function (e) { – Shahbaz

1

EDIT

моей старая скрипка не сделал работу отверстия, вот новый один, который работает:

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(); 
}); 
Смежные вопросы