Действие jQuery — перезаписать задержку()?

#jquery #delay #slidedown #slideup

#jquery #задержка #Скольжение вниз #скользящий переход

Вопрос:

У меня есть этот код для сообщения об ошибке, которое перекрывает страницу. Я только что добавил прослушиватель щелчков — я хочу, чтобы он пропускал задержку и сразу закрывался, если на него нажимали. Однако ничего не происходит. Если я использую .hide() в прослушивателе щелчков, это работает. Но я хочу плавно перенести это.

Есть идеи?

 // Flash messages effect
$("#FlashMessage").slideDown('250').delay(3000).slideUp('250');

// Hide flash message when clicked
$("#FlashMessage").click(function(){
    $("#FlashMessage").slideUp('250');
});
  

Ответ №1:

Если #FlashMessage это реальный флэш-объект, он может перехватывать входные данные и не выдавать событие, как ожидалось.

Возможно, я ошибаюсь, но возможным решением может быть использование .focus() вместо .click()`

Попробуйте использовать изображение, а не flash, и протестируйте его, если оно работает. Я прав, и flash отклоняет событие.

Комментарии:

1. Привет, спасибо за ответ. Нет, это просто div с текстом. Я вижу, что происходит сейчас. Когда я нажимаю, это просто добавляет новую команду в конец очереди. Итак, мне нужно каким-то образом отменить существующую команду и заменить ее новой. Отменить задержку…

2. Привет, понял. Попробуйте: $("#FlashMessage").stop(true,true).slideUp('250');

Ответ №2:

jquery.пропустить задержку невозможно. Вместо этого используйте методы тайм-аута js

 $("#FlashMessage").slideDown('250');
window.setTimeout( function(){ $("#FlashMessage").slideUp('250'); },3000);

// Hide flash message when clicked
$("#FlashMessage").click(function(){
    $("#FlashMessage").slideUp('250');
});
  

http://www.w3schools.com/js/js_timing.asp