jquery replaceWith () и delay () для fadeOut () - PullRequest
3 голосов
/ 13 августа 2011

Я пытаюсь сделать следующее, чтобы заменить существующий элемент сообщением, и после небольшой задержки сообщение исчезает, но по какой-то причине я не могу заставить его работать:как исправить вышеперечисленное, чтобы добиться именно этого?

В соответствии с запросом - немного больше кода, заключенного в строку выше:

$('#form_id').fadeOut(300, function() {
     $(this).replaceWith($(message).hide().fadeIn(300).delay(1000).fadeOut(300));
});

Ответы [ 3 ]

0 голосов
/ 13 августа 2011

replaceWith () возвращает оригинальный объект jQuery, а не новый, содержащий новое содержимое.

Вы можете сохранить объект сообщения в локальной переменной:

var $message = $(message).hide();
$(this).replaceWith($message);
$message.fadeIn(300).delay(1000).fadeOut(300));

Или вы можете инвертировать логику и использовать вместо нее replaceAll () :

$(message).replaceAll(this).hide().fadeIn(300).delay(1000).fadeOut(300);
0 голосов
/ 13 августа 2011

Хорошо - я потратил немало времени, пытаясь решить эту проблему, и нашел другое решение - для тех, кто столкнется с той же проблемой - вот что я сделал - просто используя javascript setTimeout ()функция:

tar.closest('#form_id').fadeOut(300, function() {
    $(this).replaceWith($(message).hide().fadeIn(300, function() {
         var elem = $(this);
         setTimeout(function() { 
             elem.fadeOut(300);
         }, 1000);
    }));
});
0 голосов
/ 13 августа 2011

Попробуйте это:

$(this).hide().after($(message)).next().hide().fadeIn(300).delay(1000).fadeOut(300));
...