我正在尝试以下方法,以便用消息替换现有元素,并在短暂延迟后淡出消息,但由于某种原因,我无法让它工作:
$(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));
});
答案 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);
}));
});