2014-04-01 133 views
0

我有一個頁面,其中一些div出現時,如果發生。通常,這些div是瞬態狀態消息。jQuery淡入淡出瞬態元素

我希望那些消息在一段時間後消失。 我試圖

<div id="result-messages"></div> 
<script> 
$(document).ready(function() { 
    // fade out flash 'success' messages 
    $('.transient-warn-message').delay(1000).fadeTo(1000,0,function(){$(this).html('');}); 
}); 
</script> 

如果divid="result-message"將包含一個內部<div class="transient-warn-message">,它不會消失......

+0

看起來不錯http://jsfiddle.net/arunpjohny/d4cWL/1/ –

+0

嘗試在以後的時間內添加警告消息... – giuseppe

+0

您的代碼無法處理該場景,您可以在添加將執行'$('。transient-warn-message')的元素後調用方法。 1000).fadeTo(1000,0,function(){$(this).html('');});'再次 –

回答

1

您可以使用MutationObserver這個 - supports only modern browsers

jQuery(function ($) { 
    function warnOut() { 
     if ($('#result-messages .transient-warn-message').length) { 
      // fade out flash 'success' messages 
      $('.transient-warn-message').delay(1000).fadeTo(1000, 0, function() { 
       $(this).html(''); 
      }); 
     } 
    } 

    warnOut(); 


    // select the target node 
    var target = document.querySelector('#result-messages'); 

    // create an observer instance 
    var observer = new MutationObserver(function (mutations) { 
     if ($('#result-messages .transient-warn-message').length) { 
      warnOut(); 
     } 
    }); 

    // configuration of the observer: 
    var config = { 
     attributes: true, 
     childList: true, 
     characterData: true 
    }; 

    // pass in the target node, as well as the observer options 
    observer.observe(target, config); 

    // later, you can stop observing 
    //observer.disconnect(); 
}); 

演示:Fiddle