Автоматически закрывать модальное окно или закрывать по клику - PullRequest
2 голосов
/ 24 марта 2012

У меня появляется всплывающая подсказка, которую я хочу либо автоматически закрывать через 1500 мс, либо немедленно закрывать, если пользователь нажимает в любом месте на странице.

Я пробовал следующее:

$('#action-result').fadeIn('fast').delay(1500).fadeOut('fast');
$('body').click(function(){

    $('#action-result').fadeOut('fast');

});

Но по какой-то причине задержка, кажется, получает полный контроль и не позволяет чему-либо еще случиться с этим элементом, пока задержка не закончится.


EDIT

Благодаря Ohgodwhy и ThiefMaster единственное, что мне нужно было сделать с функцией щелчка, это добавить остановку для очистки .delay (), который был запущен ранее.

$('body').click(function(){

    $('#action-result').stop().fadeOut('fast');

}); 

Ответы [ 2 ]

1 голос
/ 24 марта 2012

Следующие должны достичь желаемой функциональности:

var x = setTimeout(function () { $("#action-result").fadeOut("fast"); }, 1500);
$("body").click(function () {
    $("#action-result").fadeOut("fast");
    clearTimeout(x);
});
1 голос
/ 24 марта 2012

Не используйте задержку, используйте setTimeout.

$('#action-result').fadeIn('fast', function(){
  //callback for after fadeIn completes
  setTimeout(function(){
    $(this).fadeOut('fast');
  }, 1500);  //1500 is our delay
});

Очистите тайм-аут при щелчке.

...