Javascript jquery隐藏jquery加载的div

Javascript jquery隐藏jquery加载的div,javascript,php,jquery,html,Javascript,Php,Jquery,Html,我正在创建一个网站,并使用jquery发布表单。 当我按下submit按钮时,jquery函数将表单发布到php文件。 php文件将创建一个结果错误或成功。结果由php文件响应 jquery文件使用.html()方法输出回显 我调用html输出#结果。 因此,我的问题是如何使用jquery隐藏#结果。这必须在5秒后发生 当#result与页面一起加载时,此功能可以正常工作。但不是像上面所说的那样加载#result时 setTimeout(function(){ $('#result

我正在创建一个网站,并使用jquery发布表单。 当我按下submit按钮时,jquery函数将表单发布到php文件。 php文件将创建一个结果错误或成功。结果由php文件响应 jquery文件使用
.html()
方法输出回显

我调用html输出
#结果。

因此,我的问题是如何使用jquery隐藏
#结果。这必须在5秒后发生

#result
与页面一起加载时,此功能可以正常工作。但不是像上面所说的那样加载
#result

setTimeout(function(){ 
      $('#result').slideUp(500);  
}, 5000);

我认为最简单的方法是在html中始终保留空的result div,并将其隐藏起来。这样,无论何时从AJAX获得结果,您都可以更改html,显示它,然后再次向上滑动它

$("#result").html(AJAX RESULT);
$("#result").show();
setTimeout(function(){ 
      $('#result').slideUp(500);  
}, 5000);

这将更改div的html,然后显示它。然后在5秒钟后将其隐藏。

您可以将$.ajax与成功回调选项一起使用,也可以使用.done()方法。例如:

$.ajax({
    url:"http://someurl/",
    success: function(data){ $('#result').html('success').show(); },
    error: function(data){ $('#result').html('error').show(); }
}).done(function(){
   setTimeout(function(){ 
       $('#result').slideUp(500);  
   }, 5000);
})
事实是,有时会将结果动态添加到DOM中,而jQuery函数通常在文档准备就绪时加载,要解决这个问题,您必须听取DOM的更改。如果出于某种原因您没有使用AJAX或需要其他方法,您可以尝试以下方法:

function hideMsg(){
    // Hide dynamically added div
    setTimeout(function(){ 
          $('#result').slideUp(500);  
    }, 5000);
}
// Listen DOM changes
$('.document').bind("DOMSubtreeModified", hideMsg);
要使其正常工作,您必须通过文档包装器(显示消息的位置)更改.document

JSFIDLE示例:


干杯。

你能给我们看一下你的JavaScript代码的其余部分吗,包括发出post请求的部分吗?你不能在AJAX函数的
成功
回调中执行
设置超时
吗?这很有效,但过了一会儿我的浏览器就崩溃了。解决方案是发送javascript代码,用消息隐藏消息。这种方法的缺点是,如果消息包装器频繁更改,它每次都会运行此函数。因此,为了避免这种情况,您应该专门添加一个空DIV来显示消息。不过,我同意最好在AJAX请求完成时执行此操作,请查看@dododo示例。