0

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

我调用 html 输出#result.

所以我的问题是如何隐藏#resultusing jquery。这必须在 5 秒后发生。

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

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

3 回答 3

0

问题是#result有时会动态添加到 DOM 中,而 jQuery 函数通常在文档准备好时加载,要解决此问题,您必须监听 DOM 更改。如果由于某种原因您没有使用 AJAX 或需要其他方法,您可以试试这个:

function hideMsg(){
    // Hide dynamically added div
    setTimeout(function(){ 
          $('#result').slideUp(500);  
    }, 5000);
}
// Listen DOM changes
$('.document').bind("DOMSubtreeModified", hideMsg);

为了使它起作用,您必须通过文档包装器更改.document(将显示您的消息)。

jsFiddle 示例:http: //jsfiddle.net/laelitenetwork/GUxgX/

干杯。

于 2013-10-22T17:05:43.480 回答
0

您可以将 $.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);
})
于 2013-10-22T16:38:36.293 回答
0

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

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

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

于 2013-10-22T16:32:51.467 回答