我向用户显示成功警告他的电子邮件已成功发送给我,并且我希望在3秒后将此警报发送到.slideUp()
。
这是我的代码:
if ($('.dat-alert').length) {
setTimeout($(this).slideUp(), 3000);
}
我在这里用php打印警报:
if(mail($mail_to, $mail_subject, $mail_body,$header)){
$mailMessage = '<div class="alert alert-success alert-dismissable dat-alert text-center">';
$mailMessage.= '<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>';
$mailMessage.= 'Gracias por ponerte en contacto. Te responderemos en la brevedad posible.' ;
$mailMessage.= '</div>';
}
但是,警报根本没有隐藏。任何人都知道为什么?
答案 0 :(得分:2)
你需要将一个实际的函数传递给setTimeout
,而不是任意代码(除非它是一个字符串,但这很糟糕)。只需替换此
if ($('.dat-alert').length) {
setTimeout($(this).slideUp(), 3000);
}
用这个
if ($('.dat-alert').length) {
setTimeout(function(){ $(this).slideUp(); }.bind(this), 3000);
}
编辑 - 从您的评论中可以看出this
不是它应该是的。如果没有看到更多代码,我无法确定,但无论如何,请尝试使用适当的选择器替换this
,例如:
if ($('.dat-alert').length) {
setTimeout(function(){ $('.dat-alert:first').slideUp(); }, 3000);
}