2013-08-19 84 views
3

我遇到了一個問題,詢問如何在5秒後淡出Bootstrap警報,答案如下。問題是,它只能工作一次,但是因爲我有多個在AJAX調用後生成的警報,這是不好的。每次觸發警報時,如何運行以下代碼?淡出多個Bootstrap警報

window.setTimeout(function() { 
    $(".alert").fadeTo(500, 0).slideUp(500, function(){ 
      $(this).remove(); 
    }); 
}, 5000); 
+0

秀代碼,其中「在AJAX調用之後生成警報」,這是您希望將代碼隱藏起來的地方。 –

回答

0

我認爲這是因爲$(this).remove();從DOM中刪除警報。您實際上可以修改內容,而不必在每次AJAX調用後重新生成警報。

5

一個可能的解決方案是使用自定義事件showalert顯示警報後,並在事件處理程序中刪除警報

$(document).on('showalert', '.alert', function(){ 
    window.setTimeout($.proxy(function() { 
     $(this).fadeTo(500, 0).slideUp(500, function(){ 
      $(this).remove(); 
     }); 
    }, this), 5000); 
}) 

$('<div class="alert alert-error">' + 'some message' + '</div>').appendTo('#result').trigger('showalert'); 

演示:Fiddle