jquery replaceWith()和delay()到fadeOut()

时间:2011-08-12 20:09:34

标签: jquery delay fadeout

我正在尝试以下方法,以便用消息替换现有元素,并在短暂延迟后淡出消息,但由于某种原因,我无法让它工作:

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

任何想法如何修改以上才能实现这一目标?

根据要求 - 围绕上述行的更多代码:

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

3 个答案:

答案 0 :(得分:0)

试试这个:

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

答案 1 :(得分:0)

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);

答案 2 :(得分:0)

好的 - 我花了很多时间试图解决这个问题并提出了一个不同的解决方案 - 对于任何会遇到同样问题的人 - 这就是我所做的 - 只需使用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);
    }));
});