jQuery: Задержка исчезает, если не нажать? - PullRequest
2 голосов
/ 11 марта 2011

Итак, у меня сейчас есть это:

$('#message_notice').click(function(){
   $(this).fadeOut('slow'); 
});

$('#message_notice').delay(8000).fadeOut('slow');

То, что я в конечном итоге пытаюсь сделать, это если щелкнуть сообщение, а затем продолжить и затемнить его. В противном случае, через X секунд он автоматически исчезнет.

Я могу сделать одно или другое, но если у меня есть оба (как в моем примере), то щелчок не работает (только задержка исчезновения).

Я использую jQuery 1.4.4.

Ответы [ 2 ]

5 голосов
/ 11 марта 2011

Вам нужно вызвать .stop(true) в обработчике кликов, чтобы отменить delay(), который вы положили в очередь.

Новый код должен выглядеть как

$('#message_notice').click(function(){
    $(this).stop(true).fadeOut('slow'); 
});

$('#message_notice').delay(8000).fadeOut('slow');
2 голосов
/ 11 марта 2011

Это потому, что когда вы запускаете

$('#message_notice').delay(8000).fadeOut('slow');

, вы создаете очередь анимации, к которой добавляется ваша

$('#message_notice').fadeOut('slow');

, если кто-то нажимает.

Для решениясм. ответ SLaks, который разместил его быстрее, чем я смог закончить писать ...

...